Function at 0x474930
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0xf8
lea rbp, [rsp + 0x80]
movdqa xmmword [rbp + 0x60], xmm15
movdqa xmmword [rbp + 0x50], xmm14
movdqa xmmword [rbp + 0x40], xmm13
movdqa xmmword [rbp + 0x30], xmm12
movdqa xmmword [rbp + 0x20], xmm11
movdqa xmmword [rbp + 0x10], xmm10
movdqa xmmword [rbp], xmm9
movdqa xmmword [rbp - 0x10], xmm8
movdqa xmmword [rbp - 0x20], xmm7
movdqa xmmword [rbp - 0x30], xmm6
mov rsi, r8
mov rbx, rdx
mov rdi, rcx
test r8, r8
je 0x474c8d
js 0x474e0a
mov rax, qword [0x004bedc8]
movzx eax, byte [rax]
mov r14d, 1
mov edx, 1
mov rcx, rsi
call sym.__rust_alloc
test rax, rax
je 0x474e0d
xor r12d, r12d
cmp rsi, 0x10
jb 0x474c95
movabs rcx, 0x8080808080808080
movapd xmm0, xmmword [0x004af6b0]
pxor xmm1, xmm1
movdqa xmm4, xmmword [0x004af6e0]
movdqa xmm5, xmmword [0x004af6f0]
movdqa xmm6, xmmword [0x004af700]
movdqa xmm7, xmmword [0x004af710]
movdqa xmm8, xmmword [0x004af720]
movdqa xmm9, xmmword [0x004af730]
movdqa xmm10, xmmword [0x004af740]
movdqa xmm11, xmmword [0x004af750]
movdqa xmm15, xmmword [0x004af790]
movdqa xmm2, xmmword [0x004af7a0]
nop dword [rax + rax]
mov r11, qword [rbx + r12]
movdqu xmm3, xmmword [rbx + r12]
pshufd xmm12, xmm3, 0xee
movq rdx, xmm12
mov r8, rdx
or r8, r11
test r8, rcx
jne 0x474c95
mov r8, r11
mov r9, r11
mov r10, r11
mov r14, r11
shr r11d, 8
movd xmm12, r11d
shr r14, 0x20
pshufd xmm13, xmm3, 0x44
movdqa xmm14, xmm3
psrlq xmm14, 0x10
psrlq xmm13, 0x18
movsd xmm13, xmm14
movd xmm14, r14d
shr r10, 0x28
punpcklqdq xmm3, xmm12
movd xmm12, r10d
andpd xmm13, xmm0
pand xmm3, xmm0
packuswb xmm3, xmm13
pshufd xmm13, xmm14, 0x50
movdqa xmm14, xmmword [0x004af6c0]
pandn xmm14, xmm13
psllq xmm12, 0x28
movdqa xmm13, xmmword [0x004af6d0]
pandn xmm13, xmm12
shr r9, 0x30
por xmm13, xmm14
movd xmm12, r9d
shr r8, 0x38
packuswb xmm3, xmm1
packuswb xmm3, xmm1
por xmm13, xmm3
psllq xmm12, 0x30
movdqa xmm3, xmm4
pandn xmm3, xmm12
movd xmm12, r8d
mov r8d, edx
shr r8d, 8
pand xmm13, xmm4
por xmm3, xmm13
pand xmm3, xmm5
psllq xmm12, 0x38
movdqa xmm13, xmm5
pandn xmm13, xmm12
por xmm13, xmm3
movd xmm3, edx
pshufd xmm3, xmm3, 0x44
movdqa xmm12, xmm6
pandn xmm12, xmm3
movd xmm3, r8d
mov r8d, edx
shr r8d, 0x10
pand xmm13, xmm6
por xmm12, xmm13
pslldq xmm3, 9
movdqa xmm13, xmm7
pandn xmm13, xmm3
movd xmm3, r8d
mov r8d, edx
shr r8d, 0x18
pand xmm12, xmm7
por xmm13, xmm12
pslldq xmm3, 0xa
movdqa xmm12, xmm8
pandn xmm12, xmm3
movd xmm3, r8d
mov r8, rdx
shr r8, 0x20
pand xmm13, xmm8
por xmm12, xmm13
pslldq xmm3, 0xb
movdqa xmm13, xmm9
pandn xmm13, xmm3
movd xmm3, r8d
mov r8, rdx
shr r8, 0x28
pand xmm12, xmm9
por xmm13, xmm12
pshufd xmm3, xmm3, 0
movdqa xmm12, xmm10
pandn xmm12, xmm3
movd xmm3, r8d
shr rdx, 0x30
pand xmm13, xmm10
por xmm12, xmm13
pand xmm12, xmm11
pslldq xmm3, 0xd
movdqa xmm13, xmm11
pandn xmm13, xmm3
por xmm13, xmm12
pand xmm13, xmmword [0x004af760]
movd xmm3, edx
pslldq xmm3, 0xe
por xmm3, xmm13
pand xmm3, xmmword [0x004af770]
movzx edx, byte [rbx + r12 + 0xf]
movd xmm12, edx
pslldq xmm12, 0xf
por xmm12, xmm3
movdqa xmm3, xmm12
paddb xmm3, xmmword [0x004af780]
movdqa xmm13, xmm3
pminub xmm13, xmm15
pcmpeqb xmm13, xmm3
pand xmm13, xmm2
pxor xmm13, xmm12
movdqu xmmword [rax + r12], xmm13
lea rdx, [r12 + 0x10]
add r12, 0x20
cmp r12, rsi
mov r12, rdx
jbe 0x474a40
mov r12, rdx
jmp 0x474c95
mov eax, 1
xor r12d, r12d
mov qword [rbp - 0x58], rsi
mov qword [rbp - 0x50], rax
mov qword [rbp - 0x48], r12
cmp r12, rsi
je 0x474dac
add rsi, rbx
add r12, rbx
lea rbx, [rbp - 0x3c]
lea r14, [rbp - 0x58]
nop dword [rax + rax]
movzx edx, byte [r12]
test dl, dl
js 0x474cd0
inc r12
jmp 0x474d40
mov eax, edx
and eax, 0x1f
movzx r8d, byte [r12 + 1]
and r8d, 0x3f
cmp dl, 0xdf
jbe 0x474d21
movzx ecx, byte [r12 + 2]
shl r8d, 6
and ecx, 0x3f
or ecx, r8d
cmp dl, 0xef
jbe 0x474d2f
movzx edx, byte [r12 + 3]
and eax, 7
shl eax, 0x12
shl ecx, 6
and edx, 0x3f
or edx, ecx
or edx, eax
cmp edx, 0x110000
je 0x474dac
add r12, 4
jmp 0x474d40
add r12, 2
shl eax, 6
or eax, r8d
mov edx, eax
jmp 0x474d40
add r12, 3
shl eax, 0xc
or ecx, eax
mov edx, ecx
nop word [rax + rax]
mov rcx, rbx
call dbg.to_upper
mov r15d, dword [rbp - 0x38]
test r15d, r15d
je 0x474d80
mov edx, dword [rbp - 0x3c]
mov r13d, dword [rbp - 0x34]
test r13d, r13d
je 0x474d90
mov rcx, r14
call sym.alloc::string::String::push::h062c93a447a86a28
mov rcx, r14
mov edx, r15d
call sym.alloc::string::String::push::h062c93a447a86a28
mov r15d, r13d
jmp 0x474d98
mov r15d, dword [rbp - 0x3c]
jmp 0x474d98
mov rcx, r14
call sym.alloc::string::String::push::h062c93a447a86a28
mov rcx, r14
mov edx, r15d
call sym.alloc::string::String::push::h062c93a447a86a28
cmp r12, rsi
jne 0x474cc0
mov rax, qword [rbp - 0x48]
mov qword [rdi + 0x10], rax
mov rax, qword [rbp - 0x58]
mov qword [rdi], rax
mov rax, qword [rbp - 0x50]
mov qword [rdi + 8], rax
mov rax, rdi
movaps xmm6, xmmword [rbp - 0x30]
movaps xmm7, xmmword [rbp - 0x20]
movaps xmm8, xmmword [rbp - 0x10]
movaps xmm9, xmmword [rbp]
movaps xmm10, xmmword [rbp + 0x10]
movaps xmm11, xmmword [rbp + 0x20]
movaps xmm12, xmmword [rbp + 0x30]
movaps xmm13, xmmword [rbp + 0x40]
movaps xmm14, xmmword [rbp + 0x50]
movaps xmm15, xmmword [rbp + 0x60]
add rsp, 0xf8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
xor r14d, r14d
mov rcx, r14
mov rdx, rsi
call dbg.handle_error
mov rsi, rax
mov rdx, qword [rbp - 0x58]
test rdx, rdx
je 0x474e33
mov rcx, qword [rbp - 0x50]
mov r8d, 1
call sym.__rust_dealloc
mov rcx, rsi
call sym._Unwind_Resume
int3