Function at 0x40c140
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
mov rbp, rsp
mov qword [rbp + 0x20], rdx
mov qword [rbp + 0x60], rcx
mov rcx, qword [rbp + 0x60]
call fcn.0040fef0
nop
movsd xmm0, qword [0x0040c3b0]
movq qword [rbp + 0x28], xmm0
mov rax, qword [rbp + 0x20]
mov dword [rax], 0
cmp qword [rbp + 0x60], 0
jne 0x40c188
mov rax, qword [rbp + 0x20]
add dword [rax], 1
jmp 0x40c391
xor esi, esi
xor edx, edx
xor edi, edi
jmp 0x40c199
mov rax, qword [rbp + 0x20]
add dword [rax], 1
mov rax, qword [rbp + 0x60]
mov rcx, qword [rbp + 0x20]
mov ecx, dword [rcx]
add ecx, 1
movsxd rcx, ecx
cmp word [rax + rcx*2 - 2], 0x20
je 0x40c192
mov rax, qword [rbp + 0x60]
mov rcx, qword [rbp + 0x20]
mov ecx, dword [rcx]
add ecx, 1
movsxd rcx, ecx
movzx rbx, word [rax + rcx*2 - 2]
cmp bx, 0x2b
je 0x40c1d3
cmp bx, 0x2d
jne 0x40c1e2
mov rax, qword [rbp + 0x20]
add dword [rax], 1
cmp bx, 0x2d
sete sil
mov rax, qword [rbp + 0x60]
mov rcx, qword [rbp + 0x20]
mov ecx, dword [rcx]
add ecx, 1
movsxd rcx, ecx
movzx rbx, word [rax + rcx*2 - 2]
mov rax, qword [rbp + 0x20]
add dword [rax], 1
mov eax, ebx
cmp ax, 0x30
jb 0x40c239
cmp ax, 0x39
ja 0x40c239
movq xmm0, qword [rbp + 0x28]
mulsd xmm0, qword [0x0040c3b8]
movzx eax, ax
cvtsi2sd xmm1, eax
addsd xmm0, xmm1
subsd xmm0, qword [0x0040c3c0]
movq qword [rbp + 0x28], xmm0
mov dil, 1
jmp 0x40c1e2
nop
xor eax, eax
cmp bx, 0x2e
jne 0x40c2b5
mov rcx, qword [rbp + 0x60]
mov r8, qword [rbp + 0x20]
mov r8d, dword [r8]
add r8d, 1
movsxd r8, r8d
movzx rbx, word [rcx + r8*2 - 2]
mov rcx, qword [rbp + 0x20]
add dword [rcx], 1
mov ecx, ebx
cmp cx, 0x30
jb 0x40c26f
cmp cx, 0x39
jbe 0x40c285
test dil, dil
jne 0x40c2b4
test bx, bx
jne 0x40c2b4
mov rcx, qword [rbp + 0x20]
sub dword [rcx], 1
mov dil, 1
jmp 0x40c2b4
movq xmm0, qword [rbp + 0x28]
mulsd xmm0, qword [0x0040c3b8]
movzx ecx, cx
cvtsi2sd xmm1, ecx
addsd xmm0, xmm1
subsd xmm0, qword [0x0040c3c0]
movq qword [rbp + 0x28], xmm0
sub eax, 1
mov dil, 1
jmp 0x40c242
nop
xor ecx, ecx
mov r8d, ebx
or r8w, 0x20
cmp r8w, 0x65
jne 0x40c34a
xor edi, edi
mov r8, qword [rbp + 0x60]
mov r9, qword [rbp + 0x20]
mov r9d, dword [r9]
add r9d, 1
movsxd r9, r9d
movzx rbx, word [r8 + r9*2 - 2]
cmp bx, 0x2b
je 0x40c2f1
cmp bx, 0x2d
jne 0x40c2ff
mov rdx, qword [rbp + 0x20]
add dword [rdx], 1
cmp bx, 0x2d
sete dl
mov r8, qword [rbp + 0x60]
mov r9, qword [rbp + 0x20]
mov r9d, dword [r9]
add r9d, 1
movsxd r9, r9d
movzx rbx, word [r8 + r9*2 - 2]
mov r8, qword [rbp + 0x20]
add dword [r8], 1
mov r8d, ebx
cmp r8w, 0x30
jb 0x40c343
cmp r8w, 0x39
ja 0x40c343
add ecx, ecx
lea rcx, [rcx + rcx*4]
movzx ebx, bx
add ecx, ebx
sub ecx, 0x30
mov dil, 1
jmp 0x40c2ff
nop
test dl, dl
je 0x40c34a
neg ecx
add eax, ecx
test eax, eax
je 0x40c363
movq xmm0, qword [rbp + 0x28]
mov edx, eax
call fcn.0040c4a0
movq qword [rbp + 0x28], xmm0
test sil, sil
je 0x40c37c
movq xmm0, qword [rbp + 0x28]
xorpd xmm0, xmmword [0x0040c3d0]
movq qword [rbp + 0x28], xmm0
test dil, dil
je 0x40c390
test bx, bx
jne 0x40c390
mov rax, qword [rbp + 0x20]
mov dword [rax], 0
nop
lea rcx, [rbp + 0x60]
call fcn.0040fd60
movq xmm0, qword [rbp + 0x28]
lea rsp, [rbp + 0x38]
pop rbx
pop rsi
pop rdi
pop rbp
ret