Function at 0x40ddea
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
mov eax, dword [0x432050]
xor eax, ebp
mov dword [ebp - 4], eax
movaps xmm0, xmmword [0x4271a0]
mov eax, dword [ebp + 0x10]
push esi
mov esi, edx
mov dword [ebp - 0x3c], ecx
movups xmmword [ebp - 0x2c], xmm0
xor edx, edx
mov dword [ebp - 0x30], eax
movaps xmm0, xmmword [0x427190]
mov dword [ebp - 0xc], 0x2020100
mov dword [ebp - 8], 0x3030303
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x38], edi
movups xmmword [ebp - 0x1c], xmm0
cmp esi, 5
jae 0x40de3f
xor eax, eax
jmp 0x40dfc3
mov edi, dword [ebp - 0x30]
push ebx
mov ebx, dword [ebp + 8]
mov eax, ebx
sub eax, dword [edi]
mov edi, dword [ebp - 0x38]
cmp eax, 5
jbe 0x40de5d
mov edi, dword [ebp - 0x30]
lea eax, [ebx - 5]
mov dword [edi], eax
mov edi, dword [ebp - 0x38]
lea eax, [esi - 5]
lea esi, [ecx + 4]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x34], esi
mov al, byte [ecx + edx]
cmp al, 0xe8
je 0x40de7f
cmp al, 0xe9
je 0x40de7f
xor eax, eax
xor ecx, ecx
inc eax
inc ecx
jmp 0x40dfad
mov eax, dword [ebp - 0x30]
mov ecx, edx
sub ecx, dword [eax]
lea eax, [edx + ebx]
add ecx, ebx
mov ebx, dword [ebp - 0x30]
mov dword [ebx], eax
cmp ecx, 5
jbe 0x40de9a
and dword [edi], 0
jmp 0x40deac
test ecx, ecx
je 0x40deac
mov eax, dword [edi]
and eax, 0x77
add eax, eax
mov dword [edi], eax
sub ecx, 1
jne 0x40de9e
mov bl, byte [esi]
test bl, bl
je 0x40debe
cmp bl, 0xff
je 0x40debe
mov ecx, dword [edi]
jmp 0x40df90
mov ecx, dword [edi]
mov eax, ecx
mov esi, ecx
mov dword [ebp - 0x40], eax
shr esi, 1
mov eax, esi
mov dword [ebp - 0x44], esi
and eax, 7
cmp dword [ebp + eax*4 - 0x2c], 0
je 0x40df8d
cmp esi, 0x10
jae 0x40df8d
mov ecx, dword [ebp - 0x3c]
mov edi, dword [ebp + 8]
movzx esi, bl
shl esi, 8
movzx eax, byte [ecx + edx + 3]
or esi, eax
movzx eax, byte [ecx + edx + 2]
shl esi, 8
or esi, eax
movzx eax, byte [ecx + edx + 1]
shl esi, 8
or esi, eax
cmp dword [ebp + 0x14], 0
je 0x40df1c
lea eax, [esi + edx]
lea ebx, [edi + 5]
add ebx, eax
jmp 0x40df25
mov ebx, esi
sub ebx, edx
sub ebx, edi
sub ebx, 5
cmp dword [ebp - 0x40], 0
je 0x40df59
mov eax, dword [ebp - 0x44]
push 3
pop ecx
movzx esi, byte [ebp + eax - 0xc]
mov eax, ebx
sub ecx, esi
shl ecx, 3
shr eax, cl
test al, al
je 0x40df47
cmp al, 0xff
jne 0x40df59
push 4
pop ecx
sub ecx, esi
xor esi, esi
shl ecx, 3
inc esi
shl esi, cl
dec esi
xor esi, ebx
jmp 0x40df0c
mov esi, dword [ebp - 0x34]
mov eax, ebx
mov ecx, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x38]
shr eax, 0x18
and al, 1
neg al
mov byte [esi], al
mov eax, ebx
shr eax, 0x10
mov byte [ecx + edx + 3], al
mov eax, ebx
shr eax, 8
push 5
mov byte [ecx + edx + 2], al
pop eax
mov byte [ecx + edx + 1], bl
and dword [edi], 0
push eax
pop ecx
jmp 0x40dfaa
mov esi, dword [ebp - 0x34]
xor ebx, ebx
inc ebx
or ecx, ebx
mov dword [edi], ecx
mov al, byte [esi]
test al, al
je 0x40dfa1
cmp al, 0xff
jne 0x40dfa6
or ecx, 0x10
mov dword [edi], ecx
mov ecx, ebx
mov eax, ebx
mov ebx, dword [ebp + 8]
add esi, ecx
add edx, eax
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x34], esi
cmp edx, dword [ebp - 0x48]
jbe 0x40de69
mov eax, edx
pop ebx
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.0040f6b6
leave
ret 0x10