Function at 0x42d130
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x18
mov esi, ecx
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [ebp - 0x24], edx
inc ecx
je 0x42d194
pxor xmm0, xmm0
cmp ecx, 0x11
pcmpgtb xmm0, xmmword [eax]
por xmm0, xmmword [0x55f550]
movdqa xmmword [eax], xmm0
jb 0x42d18b
movdqa xmm0, xmmword [0x55f550]
mov edx, 0x10
nop dword [eax]
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [eax + edx]
por xmm1, xmm0
movdqa xmmword [eax + edx], xmm1
add edx, 0x10
jb 0x42d18b
cmp edx, ecx
jb 0x42d170
cmp ecx, 0x10
jae 0x42d472
push ecx
push eax
add eax, 0x10
push eax
call sub.msvcrt.dll_memmove
add esp, 0xc
mov ecx, dword [esi + 4]
cmp ecx, 0xffffffff
je 0x42d492
xor ebx, ebx
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x1c], ecx
jmp 0x42d1ea
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x14]
lea eax, [ebx - 0x10]
and edx, eax
mov eax, dword [ebp - 0x20]
shr eax, 0x19
mov byte [ecx + ebx], al
mov ecx, eax
mov eax, dword [esi]
mov byte [edx + eax + 0x10], cl
mov ecx, dword [ebp - 0x1c]
cmp ebx, ecx
lea ebx, [ebx + 1]
je 0x42d45a
mov edi, dword [esi]
cmp byte [edi + ebx], 0x80
jne 0x42d1df
lea eax, [ebx*8]
mov dword [ebp - 0x18], ebx
lea eax, [eax + eax*2]
sub edi, eax
add edi, 0xffffffe8
nop word cs:[eax + eax]
nop
push ebx
push esi
push dword [ebp - 0x24]
call dword [ebp + 8]
add esp, 0xc
mov edx, dword [esi + 4]
mov ecx, dword [esi]
mov dword [ebp - 0x20], eax
mov ebx, edx
and ebx, eax
movdqu xmm0, xmmword [ecx + ebx]
mov dword [ebp - 0x10], ebx
pmovmskb esi, xmm0
test esi, esi
jne 0x42d254
mov ebx, dword [ebp - 0x10]
mov eax, 0x10
nop
add ebx, eax
add eax, 0x10
and ebx, edx
movdqu xmm0, xmmword [ecx + ebx]
pmovmskb esi, xmm0
test esi, esi
je 0x42d240
tzcnt esi, esi
add esi, ebx
and esi, edx
cmp byte [ecx + esi], 0
js 0x42d26e
movdqa xmm0, xmmword [ecx]
pmovmskb eax, xmm0
tzcnt esi, eax
mov eax, dword [ebp - 0x18]
mov ebx, esi
sub ebx, dword [ebp - 0x10]
sub eax, dword [ebp - 0x10]
xor ebx, eax
and ebx, edx
cmp ebx, 0x10
jb 0x42d1c0
lea eax, [esi - 0x10]
mov ebx, dword [ebp - 0x20]
and edx, eax
movzx eax, byte [ecx + esi]
shr ebx, 0x19
mov byte [ebp - 0x10], al
mov eax, dword [ebp - 0x14]
mov byte [ecx + esi], bl
mov eax, dword [eax]
mov byte [edx + eax + 0x10], bl
lea eax, [esi*8]
lea eax, [eax + eax*2]
neg eax
cmp byte [ebp - 0x10], 0xff
lea eax, [ecx + eax - 0x18]
je 0x42d420
movzx ecx, byte [edi]
movzx edx, byte [eax]
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x18]
mov byte [edi], dl
mov byte [eax], cl
movzx ecx, byte [edi + 1]
movzx edx, byte [eax + 1]
mov byte [edi + 1], dl
mov byte [eax + 1], cl
movzx ecx, byte [edi + 2]
movzx edx, byte [eax + 2]
mov byte [edi + 2], dl
mov byte [eax + 2], cl
movzx ecx, byte [edi + 3]
movzx edx, byte [eax + 3]
mov byte [edi + 3], dl
mov byte [eax + 3], cl
movzx ecx, byte [edi + 4]
movzx edx, byte [eax + 4]
mov byte [edi + 4], dl
mov byte [eax + 4], cl
movzx ecx, byte [edi + 5]
movzx edx, byte [eax + 5]
mov byte [edi + 5], dl
mov byte [eax + 5], cl
movzx ecx, byte [edi + 6]
movzx edx, byte [eax + 6]
mov byte [edi + 6], dl
mov byte [eax + 6], cl
movzx ecx, byte [edi + 7]
movzx edx, byte [eax + 7]
mov byte [edi + 7], dl
mov byte [eax + 7], cl
movzx ecx, byte [edi + 8]
movzx edx, byte [eax + 8]
mov byte [edi + 8], dl
mov byte [eax + 8], cl
movzx ecx, byte [edi + 9]
movzx edx, byte [eax + 9]
mov byte [edi + 9], dl
mov byte [eax + 9], cl
movzx ecx, byte [edi + 0xa]
movzx edx, byte [eax + 0xa]
mov byte [edi + 0xa], dl
mov byte [eax + 0xa], cl
movzx ecx, byte [edi + 0xb]
movzx edx, byte [eax + 0xb]
mov byte [edi + 0xb], dl
mov byte [eax + 0xb], cl
movzx ecx, byte [edi + 0xc]
movzx edx, byte [eax + 0xc]
mov byte [edi + 0xc], dl
mov byte [eax + 0xc], cl
movzx ecx, byte [edi + 0xd]
movzx edx, byte [eax + 0xd]
mov byte [edi + 0xd], dl
mov byte [eax + 0xd], cl
movzx ecx, byte [edi + 0xe]
movzx edx, byte [eax + 0xe]
mov byte [edi + 0xe], dl
mov byte [eax + 0xe], cl
movzx ecx, byte [edi + 0xf]
movzx edx, byte [eax + 0xf]
mov byte [edi + 0xf], dl
mov byte [eax + 0xf], cl
movzx ecx, byte [edi + 0x10]
movzx edx, byte [eax + 0x10]
mov byte [edi + 0x10], dl
mov byte [eax + 0x10], cl
movzx ecx, byte [edi + 0x11]
movzx edx, byte [eax + 0x11]
mov byte [edi + 0x11], dl
mov byte [eax + 0x11], cl
movzx ecx, byte [edi + 0x12]
movzx edx, byte [eax + 0x12]
mov byte [edi + 0x12], dl
mov byte [eax + 0x12], cl
movzx ecx, byte [edi + 0x13]
movzx edx, byte [eax + 0x13]
mov byte [edi + 0x13], dl
mov byte [eax + 0x13], cl
movzx ecx, byte [edi + 0x14]
movzx edx, byte [eax + 0x14]
mov byte [edi + 0x14], dl
mov byte [eax + 0x14], cl
movzx ecx, byte [edi + 0x15]
movzx edx, byte [eax + 0x15]
mov byte [edi + 0x15], dl
mov byte [eax + 0x15], cl
movzx ecx, byte [edi + 0x16]
movzx edx, byte [eax + 0x16]
mov byte [edi + 0x16], dl
mov byte [eax + 0x16], cl
movzx ecx, byte [edi + 0x17]
movzx edx, byte [eax + 0x17]
mov byte [edi + 0x17], dl
mov byte [eax + 0x17], cl
jmp 0x42d210
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x18]
mov edx, dword [esi]
lea ecx, [ebx - 0x10]
and ecx, dword [esi + 4]
mov byte [edx + ebx], 0xff
mov edx, dword [esi]
mov byte [ecx + edx + 0x10], 0xff
movsd xmm0, qword [edi + 0x10]
movsd qword [eax + 0x10], xmm0
movq xmm0, qword [edi]
movq xmm1, qword [edi + 8]
movq qword [eax + 8], xmm1
movq qword [eax], xmm0
jmp 0x42d1dc
mov ecx, dword [esi + 4]
lea eax, [ecx + 1]
mov edx, eax
and eax, 0xfffffff8
shr edx, 3
sub eax, edx
cmp ecx, 8
cmovb eax, ecx
jmp 0x42d494
movq xmm0, qword [eax]
movq xmm1, qword [eax + 8]
movq qword [eax + ecx + 8], xmm1
movq qword [eax + ecx], xmm0
mov ecx, dword [esi + 4]
cmp ecx, 0xffffffff
jne 0x42d1ae
xor eax, eax
sub eax, dword [esi + 0xc]
mov dword [esi + 8], eax
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret