Function at 0x180029c60
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub rsp, 0x58
movd eax, xmm0
mov edx, eax
shr eax, 0x17
and edx, 0x7fffff
movzx r8d, al
test al, al
je 0x180029c98
add r8d, 0xffffff6a
test edx, edx
jne 0x180029c92
mov ecx, r8d
add rsp, 0x58
jmp 0x18002c300
bts edx, 0x17
jmp 0x180029cad
test edx, edx
jne 0x180029ca7
xor r9d, r9d
mov eax, r9d
add rsp, 0x58
ret
mov r8d, 0xffffff6b
mov qword [rsp + 0x68], rbx
mov ecx, 1
mov qword [rsp + 0x70], rbp
movzx ebx, dl
mov qword [rsp + 0x78], rsi
not bl
mov qword [rsp + 0x50], rdi
and bl, 1
mov qword [rsp + 0x48], r12
lea r12, [0x1800c3f68]
imul ebp, r8d, 0x4d105
mov qword [rsp + 0x40], r13
lea r13d, [rdx + rdx]
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x30], r15
sar ebp, 0x14
sub ecx, ebp
imul edi, ecx, 0x1a934f
movsxd rax, ecx
mov ecx, 0x3f
mov r12, qword [r12 + rax*8]
mov eax, r13d
or eax, 1
sar edi, 0x13
add edi, r8d
mov rsi, r12
sub ecx, edi
shr rsi, cl
mov ecx, edi
shl eax, cl
mov ecx, eax
mov rax, r12
shl rcx, 0x20
mul rcx
mov rax, rdx
shr rax, 0x20
test edx, edx
mov dword [rsp + 0x20], eax
mov r11, rax
sete byte [rsp + 0x24]
xor r9d, r9d
imul r10, rax, 0x51eb851f
lea r14d, [r9 + 0x40]
shr r10, 0x25
lea r15d, [r9 + 0x20]
imul eax, r10d, 0x64
sub r11d, eax
cmp r11d, esi
jae 0x180029e28
test r11d, r11d
jne 0x180029e60
mov rax, qword [rsp + 0x20]
xor bl, 1
shr rax, 0x20
test bl, al
je 0x180029e60
dec r10d
mov r11d, 0x64
shr esi, 1
lea eax, [r10 + r10*4]
sub r11d, esi
add r11d, 5
imul edx, r11d, 0x199a
movzx ebx, r11b
not bl
and bl, 1
mov ecx, edx
shr ecx, 0x10
lea r8d, [rcx + rax*2]
cmp dx, 0x199a
jae 0x180029def
sub r14d, edi
mov edx, r13d
imul rdx, r12
movzx ecx, r14b
sub r15d, edi
mov rax, rdx
shr rax, cl
movzx ecx, r15b
shr rdx, cl
and al, 1
cmp al, bl
jne 0x180029dec
test edx, edx
sete r9b
test r8d, r9d
je 0x180029def
dec r8d
mov eax, ebp
shl rax, 0x20
mov ecx, r8d
or rax, rcx
mov r14, qword [rsp + 0x38]
mov r13, qword [rsp + 0x40]
mov r12, qword [rsp + 0x48]
mov rdi, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x78]
mov rbp, qword [rsp + 0x70]
mov rbx, qword [rsp + 0x68]
mov r15, qword [rsp + 0x30]
add rsp, 0x58
ret
ja 0x180029d90
lea r8d, [r13 - 1]
movzx eax, bl
imul r8, r12
mov ecx, r14d
sub ecx, edi
mov rdx, r8
shr rdx, cl
mov ecx, r15d
sub ecx, edi
and dl, 1
shr r8, cl
mov ecx, r9d
test r8d, r8d
cmove ecx, eax
or cl, dl
je 0x180029d90
imul eax, r10d, 0xc28f5c29
ror eax, 2
cmp eax, 0x28f5c28
ja 0x180029e97
nop dword [rax]
nop word [rax + rax]
mov r10d, eax
add r9d, 2
imul eax, eax, 0xc28f5c29
ror eax, 2
cmp eax, 0x28f5c28
jbe 0x180029e80
imul ecx, r10d, 0xcccccccd
mov eax, r9d
ror ecx, 1
cmp ecx, 0x19999999
cmovbe r10d, ecx
or eax, 1
cmp ecx, 0x19999999
mov dword [rsp + 0x20], r10d
cmova eax, r9d
inc eax
add eax, ebp
mov dword [rsp + 0x24], eax
mov rax, qword [rsp + 0x20]
jmp 0x180029dfb
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rdi
imul r10d, ecx, 0x9a209
lea r9, [0x1800c3e70]
mov edi, ecx
mov eax, 0x1f
sub r10d, 0x3fe1f
sar r10d, 0x15
sub eax, r10d
imul r11d, r10d, 0xffe56cb1
movsxd rdx, eax
mov r9, qword [r9 + rdx*8]
sar r11d, 0x13
mov rax, r9
shr rax, 0x19
add r11d, ecx
mov ecx, 0x28
mov r8, r9
sub r8, rax
sub ecx, r11d
shr r8, cl
lea eax, [rdi - 2]
mov rdx, r9
shr rdx, 0x18
add rdx, r9
shr rdx, cl
lea ebx, [r8 + 1]
cmp eax, 1
mov eax, 0xcccccccd
cmovbe ebx, r8d
mul edx
shr edx, 3
lea eax, [rdx + rdx*4]
add eax, eax
cmp eax, ebx
jb 0x18002c3ee
imul eax, edx, 0xc28f5c29
inc r10d
xor r8d, r8d
ror eax, 2
cmp eax, 0x28f5c28
ja 0x18002c3b6
nop
mov edx, eax
add r8d, 2
imul eax, eax, 0xc28f5c29
ror eax, 2
cmp eax, 0x28f5c28
jbe 0x18002c3a0
imul ecx, edx, 0xcccccccd
mov eax, r8d
ror ecx, 1
cmp ecx, 0x19999999
cmovbe edx, ecx
or eax, 1
cmp ecx, 0x19999999
mov ecx, edx
cmova eax, r8d
add eax, r10d
shl rax, 0x20
or rax, rcx
mov rbx, qword [rsp + 8]
mov rdi, qword [rsp + 0x10]
ret
mov ecx, 0x27
lea eax, [rdi + 0x23]
sub ecx, r11d
shr r9, cl
inc r9d
shr r9d, 1
test eax, eax
jne 0x18002c414
test r9b, 1
lea ecx, [r9 - 1]
cmove ecx, r9d
jmp 0x18002c420
mov ecx, r9d
cmp r9d, ebx
jae 0x18002c420
lea ecx, [r9 + 1]
mov rbx, qword [rsp + 8]
mov rdi, qword [rsp + 0x10]
mov eax, r10d
shl rax, 0x20
or rax, rcx
ret