Function at 0x52107fe0
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
test rcx, rcx
mov rsi, rcx
mov edi, edx
mov rbp, r8
mov r12d, r9d
je 0x521082d9
test r8, r8
je 0x521082c0
mov ecx, edx
call fcn.5210e1e0
test eax, eax
jne 0x52108031
movsxd rax, edi
lea rbx, [rax + rax*2]
mov eax, 0xa
shl rbx, 6
add rbx, qword [0x52182c20]
cmp dword [rbx + 0x14], 0x10
je 0x5210803e
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
xor r8d, r8d
mov r9, rsi
mov edx, r12d
mov rcx, rbp
call qword [rbx + 0x20]
test eax, eax
jne 0x52108031
lea rbp, [rsp + 0x30]
lea r12, [rsi + 0x10a0]
mov edx, 0x10
mov rcx, rbp
call fcn.5210ece0
mov r8, rsi
mov rdx, r12
mov rcx, rbp
call qword [rbx + 0x28]
test eax, eax
jne 0x52108031
lea rcx, [rsi + 0x10e0]
mov edx, 0x10
mov dword [rsp + 0x2c], eax
lea rbx, [rsi + 0x1110]
call fcn.5210ece0
lea rcx, [rsi + 0x10b0]
mov edx, 0x10
mov r13, rbx
call fcn.5210ece0
mov dword [rsi + 0x10f0], edi
mov dword [rsi + 0x10f8], 0
mov edx, 0x10
mov dword [rsi + 0x10f4], 0
mov dword [rsi + 0x10fc], 0
mov rcx, rbp
mov qword [rsi + 0x1100], 0
mov qword [rsi + 0x1108], 0
xor edi, edi
call fcn.5210ece0
mov eax, dword [rsp + 0x2c]
mov r8, r13
mov rdx, rbp
mov rcx, r12
mov dword [rsp + 0x2c], eax
mov byte [rsp + 0x30], dil
call fcn.521116d0
lea edx, [rdi + 1]
lea r8, [r13 + 0x10]
mov rcx, r12
mov byte [rsp + 0x30], dl
mov rdx, rbp
call fcn.521116d0
lea ecx, [rdi + 2]
lea r8, [r13 + 0x20]
mov rdx, rbp
mov byte [rsp + 0x30], cl
mov rcx, r12
call fcn.521116d0
lea r8d, [rdi + 3]
mov rdx, rbp
mov rcx, r12
mov byte [rsp + 0x30], r8b
lea r8, [r13 + 0x30]
call fcn.521116d0
lea r9d, [rdi + 4]
lea r8, [r13 + 0x40]
mov rdx, rbp
mov rcx, r12
mov byte [rsp + 0x30], r9b
call fcn.521116d0
lea r10d, [rdi + 5]
lea r8, [r13 + 0x50]
mov rdx, rbp
mov rcx, r12
mov byte [rsp + 0x30], r10b
call fcn.521116d0
lea r11d, [rdi + 6]
lea r8, [r13 + 0x60]
mov rdx, rbp
mov rcx, r12
mov byte [rsp + 0x30], r11b
call fcn.521116d0
lea eax, [rdi + 7]
lea r8, [r13 + 0x70]
mov rdx, rbp
mov rcx, r12
add edi, 8
sub r13, 0xffffffffffffff80
mov byte [rsp + 0x30], al
call fcn.521116d0
cmp edi, 0x100
mov eax, dword [rsp + 0x2c]
jne 0x521080f7
mov rdi, qword [0x52182c50]
lea r13, [rsi + 0x10110]
lea rsi, [rbx + 0x1000]
lea rbp, [rbx + 0x2000]
mov r12, rsi
nop word cs:[rax + rax]
movzx ecx, byte [rbx + 0xe]
movzx edx, byte [rbx + 0xf]
add r12, 0x10
add rbx, 0x10
mov byte [r12 - 1], cl
movzx r8d, byte [rbx - 3]
add edx, edx
mov byte [r12 - 2], r8b
movzx r9d, byte [rbx - 4]
mov byte [r12 - 3], r9b
movzx r10d, byte [rbx - 5]
mov byte [r12 - 4], r10b
movzx r11d, byte [rbx - 6]
mov byte [r12 - 5], r11b
movzx ecx, byte [rbx - 7]
mov byte [r12 - 6], cl
movzx r8d, byte [rbx - 8]
mov byte [r12 - 7], r8b
movzx r9d, byte [rbx - 9]
mov byte [r12 - 8], r9b
movzx r10d, byte [rbx - 0xa]
mov byte [r12 - 9], r10b
movzx r11d, byte [rbx - 0xb]
mov byte [r12 - 0xa], r11b
movzx ecx, byte [rbx - 0xc]
movsxd r11, edx
add edx, 1
movsxd rdx, edx
mov byte [r12 - 0xb], cl
movzx r8d, byte [rbx - 0xd]
mov byte [r12 - 0xc], r8b
movzx r9d, byte [rbx - 0xe]
movzx r8d, byte [rdi + r11]
mov byte [r12 - 0xd], r9b
movzx r10d, byte [rbx - 0xf]
mov byte [r12 - 0xe], r10b
movzx ecx, byte [rbx - 0x10]
mov byte [r12 - 0x10], r8b
xor cl, byte [rdi + rdx]
mov byte [r12 - 0xf], cl
cmp r12, rbp
jne 0x521081f0
cmp r13, rsi
mov rbx, rsi
jne 0x521081d5
jmp 0x52108031
lea rdx, str.src_encauth_gcm_gcm_init.c
lea rcx, [0x5217e287]
mov r8d, 0x24
call fcn.5210e1a0
lea rdx, str.src_encauth_gcm_gcm_init.c
lea rcx, [0x5217e27b]
mov r8d, 0x23
call fcn.5210e1a0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop