Function at 0x413710
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x1c
movzx ebx, byte [edx + 0x1e]
mov ah, byte [edx + 0x1c]
call 0x413725
pop esi
mov dword [ebp - 0x28], ecx
mov edi, 0
mov dword [ebp - 0x20], esi
mov esi, 0
test bl, bl
setne al
xor ecx, ecx
cmp ah, 1
ja 0x4137fe
mov byte [ebp - 0x18], ah
xor edi, edi
test bl, bl
mov ah, al
mov dword [ebp - 0x10], 0
jne 0x4137ef
movzx ecx, byte [edx + 8]
mov dword [ebp - 0x10], 0
mov ch, cl
add ch, 0xfb
cmp ch, 1
ja 0x4137ef
mov esi, dword [edx]
cmp byte [ebp - 0x18], 0
mov dword [ebp - 0x10], esi
mov esi, dword [edx + 4]
jne 0x4137a4
cmp cl, 6
mov ebx, 0
je 0x413797
mov ebx, 2
cmp esi, 2
jb 0x41399d
cmp ebx, esi
jne 0x4137aa
mov dword [ebp - 0x10], 0
jmp 0x4137ef
xor ebx, ebx
cmp ebx, esi
je 0x41379b
mov ecx, dword [ebp - 0x10]
add esi, dword [ebp - 0x10]
lea ecx, [ecx + ebx + 1]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x10]
cmp dword [ebp - 0x1c], esi
mov esi, dword [ebp - 0x1c]
mov ch, byte [ecx + ebx]
sete al
mov cl, al
test al, 1
jne 0x4137e4
cmp ch, 0x2e
jne 0x4137e4
mov al, byte [esi]
cmp al, 0x5c
sete cl
cmp al, 0x2f
sete bl
or bl, cl
mov dword [ebp - 0x10], ebx
jmp 0x4137ef
cmp ch, 0x2e
sete al
and cl, al
mov dword [ebp - 0x10], ecx
cmp byte [ebp - 0x18], 0
je 0x4138e6
mov esi, dword [ebp - 0x10]
mov cl, ah
mov eax, esi
mov esi, dword [edx + 4]
movzx ecx, cl
movzx eax, al
mov dword [ebp - 0x24], ecx
add ecx, eax
mov dword [ebp - 0x1c], eax
add ecx, edi
cmp ecx, esi
ja 0x413985
mov eax, dword [edx]
mov dword [ebp - 0x10], ecx
mov ebx, eax
lea ebx, [eax + ecx]
mov dword [ebp - 0x20], eax
xor eax, eax
cmp ecx, esi
mov dword [ebp - 0x18], ebx
movzx ebx, byte [edx + 8]
jne 0x413873
mov edi, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x10]
sub esi, ecx
je 0x413929
mov ecx, ebx
mov bl, 9
cmp esi, 2
je 0x4138d5
cmp esi, 1
jne 0x41392b
cmp byte [edi], 0x2e
jne 0x41392b
xor ebx, ebx
cmp cl, 3
setae bl
lea ebx, [ebx + ebx*2 + 7]
jmp 0x41392b
cmp bl, 3
jae 0x41389b
add edi, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x20]
add edi, dword [ebp - 0x1c]
lea ecx, [esi + ecx - 1]
sub edi, esi
nop word [eax + eax]
cmp byte [ecx], 0x5c
je 0x41390a
dec ecx
inc edi
jne 0x413890
jmp 0x413835
add edi, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x20]
mov byte [ebp - 0x11], bl
add edi, dword [ebp - 0x1c]
lea ecx, [esi + ecx - 1]
sub edi, esi
nop dword [eax]
movzx ebx, byte [ecx]
cmp ebx, 0x2f
je 0x413906
cmp ebx, 0x5c
je 0x413906
dec ecx
inc edi
jne 0x4138b0
mov edi, dword [ebp - 0x18]
movzx ebx, byte [ebp - 0x11]
mov ecx, dword [ebp - 0x10]
sub esi, ecx
jne 0x413843
jmp 0x413929
cmp byte [edi], 0x2e
jne 0x41392b
cmp byte [edi + 1], 0x2e
sete bl
xor bl, 9
jmp 0x41392b
movzx ecx, byte [edx + 8]
mov ebx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x10]
add ebx, dword [ecx*4 + 0x4139b0]
mov cl, ah
jmp ebx
movzx ebx, byte [ebp - 0x11]
not edi
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx + edi + 1]
cmp ecx, esi
ja 0x413991
mov edi, dword [ebp - 0x20]
mov eax, 1
add edi, ecx
sub esi, ecx
jne 0x413843
mov bl, 0xa
mov ecx, dword [ebp - 0x28]
add eax, esi
mov dword [ecx], eax
mov byte [ecx + 4], bl
mov dword [ecx + 8], edi
mov dword [ecx + 0xc], esi
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, esi
push 0x42a874
call fcn.00418c20
mov edx, esi
push 0x42a864
call fcn.00418c20
mov ecx, 2
mov edx, esi
push 0x42a854
call fcn.00418c20
nop
salc
add dword [eax], eax
add byte [eax], ch
add al, byte [eax]
add byte [esi], bl
add al, byte [eax]
add dh, dl
add dword [eax], eax
add byte [edi], bh
add al, byte [eax]
add byte [esi + 2], dl
add byte [eax], al
fld dword [eax]
add byte [eax], al
int3