Function at 0x180121900
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbp
push rbx
sub rsp, 0x88
movaps xmmword [rsp + 0x70], xmm6
movaps xmmword [rsp + 0x60], xmm7
movaps xmmword [rsp + 0x50], xmm8
movaps xmmword [rsp + 0x40], xmm9
mov rsi, rcx
mov edi, edx
mov rbx, r8
mov rbp, r9
mov edx, edi
mov rcx, rsi
call fcn.180113940
mov ecx, eax
lea rsi, [rsi + rcx*2]
sub edi, eax
jne 0x18012197d
xor eax, eax
mov qword [rbx], rax
mov dword [rbp], eax
mov rax, rsi
movaps xmm6, xmmword [rsp + 0x70]
movaps xmm7, xmmword [rsp + 0x60]
movaps xmm8, xmmword [rsp + 0x50]
movaps xmm9, xmmword [rsp + 0x40]
add rsp, 0x88
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
xor r14d, r14d
xor r15d, r15d
mov ecx, edi
lea r12, [rsi + rcx*2]
test byte [0x180418d18], 0x10
je 0x180121a84
cmp edi, 8
jl 0x180121bf2
movups xmm6, xmmword [0x18035ef60]
movups xmm7, xmmword [0x18035ef70]
movups xmm8, xmmword [case.0x1800f7679.116]
lea rdi, [r12 - 0x10]
movdqu xmm9, xmmword [rsi]
add rsi, 0x10
movaps xmm0, xmm9
pminuw xmm0, xmm6
movaps xmm1, xmm9
paddusw xmm1, xmm7
por xmm0, xmm1
pmovmskb ecx, xmm0
test byte [0x180418d18], 0x40
je 0x1801219ef
xor r13d, r13d
popcnt r13d, ecx
jmp 0x1801219f7
call fcn.1800f2f10
mov r13d, eax
mov r13d, r13d
movaps xmm0, xmm9
paddw xmm0, xmm8
movaps xmm1, xmm7
pcmpgtw xmm1, xmm0
pmovmskb ecx, xmm1
cmp ecx, 0xffff
jne 0x180121a23
add r14, r13
cmp rsi, rdi
jbe 0x1801219ba
jmp 0x180121bf2
not ecx
psrlw xmm9, 3
pmovmskb eax, xmm9
mov edx, eax
and edx, ecx
xor eax, 0x5555
and ecx, eax
shl ecx, 2
movzx eax, cx
cmp eax, edx
jne 0x180121a7b
cmp ecx, 0xffff
jbe 0x180121a58
movzx ecx, cx
add r13, 0xfffffffffffffffe
add rsi, 0xfffffffffffffffe
test byte [0x180418d18], 0x40
je 0x180121a69
xor eax, eax
popcnt eax, ecx
jmp 0x180121a6e
call fcn.1800f2f10
mov eax, eax
sub r15d, eax
sub r14, rax
sub r14, rax
jmp 0x180121a16
add rsi, 0xfffffffffffffff0
jmp 0x180121bf2
cmp edi, 8
jl 0x180121bf2
mov eax, 0x800080
movd xmm0, eax
pshufd xmm0, xmm0, 0
mov eax, 0x4000400
movd xmm1, eax
pshufd xmm1, xmm1, 0
mov eax, 0x8000800
movd xmm2, eax
pshufd xmm2, xmm2, 0
mov eax, 0xd800d800
movd xmm3, eax
pshufd xmm3, xmm3, 0
lea rax, [r12 - 0x10]
movups xmm4, xmmword [rsi]
movups xmm5, xmmword [0x18035ef90]
movaps xmm6, xmm4
psubw xmm6, xmm5
movaps xmm7, xmm0
psubw xmm7, xmm5
movaps xmm5, xmm6
pcmpgtw xmm5, xmm7
movaps xmm7, xmm4
pcmpeqw xmm7, xmm0
por xmm5, xmm7
movups xmm7, xmmword [0x18035ef90]
movaps xmm8, xmm2
psubw xmm8, xmm7
pcmpgtw xmm6, xmm8
movaps xmm7, xmm4
pcmpeqw xmm7, xmm2
por xmm6, xmm7
xorps xmm7, xmm7
psubw xmm7, xmm5
psubw xmm7, xmm6
movaps xmmword [rsp + 0x30], xmm7
mov rdx, qword [rsp + 0x30]
add rdx, qword [rsp + 0x38]
mov ecx, edx
shr rdx, 0x20
add ecx, edx
movzx edx, cx
shr ecx, 0x10
add ecx, edx
psubw xmm4, xmm3
movups xmm5, xmmword [0x18035ef90]
movaps xmm6, xmm4
psubw xmm6, xmm5
pcmpgtw xmm8, xmm6
xorps xmm5, xmm5
pcmpeqw xmm5, xmm8
pmovmskb edx, xmm5
cmp edx, 0xffff
je 0x180121be0
movups xmm5, xmmword [0x18035ef90]
psubw xmm4, xmm5
movaps xmm6, xmm1
psubw xmm6, xmm5
pcmpgtw xmm6, xmm4
movaps xmm4, xmm6
pandn xmm4, xmm8
pextrw edx, xmm4, 0
test edx, edx
jne 0x180121c49
xor edx, edx
xor r8d, r8d
movups xmmword [rsp + 0x20], xmm6
movzx r9d, word [rsp + r8*2 + 0x20]
sub edx, r9d
movzx edx, dx
inc r8d
movups xmmword [rsp + 0x20], xmm4
movzx r10d, word [rsp + r8*2 + 0x20]
cmp r10d, r9d
jne 0x180121bf2
cmp r8d, 7
jl 0x180121b99
pextrw r8d, xmm6, 7
test r8d, r8d
je 0x180121bd5
add rsi, 0xfffffffffffffffe
add ecx, 0xfffffffe
mov edx, edx
sub r15d, edx
sub r14, rdx
sub r14, rdx
mov edx, ecx
add r14, rdx
add rsi, 0x10
cmp rsi, rax
jbe 0x180121aca
cmp rsi, r12
jae 0x180121c49
movzx eax, word [rsi]
cmp eax, 0x7f
jbe 0x180121c40
lea edx, [rax + 0x1f800]
shr edx, 0x10
add r14, rdx
add eax, 0xffff2800
cmp eax, 0x7ff
ja 0x180121c40
add r14, 0xfffffffffffffffe
mov rax, r12
sub rax, rsi
cmp rax, 4
jb 0x180121c49
mov eax, dword [rsi]
add eax, 0x23ff2800
test eax, 0xfc00fc00
jne 0x180121c49
dec r15d
add r14, 2
add rsi, 2
add rsi, 2
cmp rsi, r12
jb 0x180121bf7
mov qword [rbx], r14
mov dword [rbp], r15d
mov rax, rsi
movaps xmm6, xmmword [rsp + 0x70]
movaps xmm7, xmmword [rsp + 0x60]
movaps xmm8, xmmword [rsp + 0x50]
movaps xmm9, xmmword [rsp + 0x40]
add rsp, 0x88
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret