Function at 0x35ee8
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x78
mov rax, qword [0x00047100]
xor rax, rsp
mov qword [rsp + 0x68], rax
mov r15, qword [rsp + 0xf0]
mov r12, qword [rsp + 0x100]
mov rsi, r9
mov rdi, r8
mov rbx, rdx
mov qword [rsp + 0x20], rdx
mov r14, rcx
test rdx, rdx
je 0x3626d
cmp dword [rcx + 0x10], 1
jne 0x3626d
mov ebp, 0x10
cmp qword [rcx + 0x18], rbp
jne 0x3626d
cmp r9, 1
jb 0x3626d
mov r13, qword [rsp + 0x108]
lea rax, [r13 - 4]
cmp rax, 0xc
ja 0x3626d
lea rcx, [rsp + 0x58]
mov r8, rbp
xor edx, edx
call fcn.0003bc80
lea r8, [rsp + 0x58]
lea rdx, [rsp + 0x58]
mov rcx, rbx
call qword [r14 + 0x38]
cmp rsi, 0xc
jne 0x35fbf
mov eax, dword [rdi]
lea rcx, [rsp + 0x38]
mov dword [rcx], eax
mov eax, dword [rdi + 4]
mov dword [rcx + 4], eax
mov eax, dword [rdi + 8]
mov dword [rcx + 8], eax
mov byte [rsp + 0x44], 0
mov byte [rsp + 0x45], 0
mov byte [rsp + 0x46], 0
mov byte [rsp + 0x47], 1
jmp 0x36085
lea rcx, [rsp + 0x38]
mov r8, rbp
xor edx, edx
call fcn.0003bc80
mov rbp, rsi
test rsi, rsi
je 0x36023
mov ebx, 0x10
cmp rbp, rbx
cmovb rbx, rbp
xor edx, edx
test rbx, rbx
je 0x36007
lea rax, [rsp + 0x38]
mov r8, rdi
sub r8, rax
lea rcx, [rsp + rdx + 0x38]
inc rdx
mov al, byte [r8 + rcx]
xor byte [rcx], al
cmp rdx, rbx
jb 0x35ff4
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x38]
call fcn.00036660
add rdi, rbx
sub rbp, rbx
jne 0x35fd6
mov rbx, qword [rsp + 0x20]
mov ebp, 0x10
lea rcx, [rsp + 0x28]
xor edx, edx
mov r8, rbp
call fcn.0003bc80
mov r11d, esi
shl sil, 3
shl r11d, 3
mov byte [rsp + 0x37], sil
mov eax, r11d
shr eax, 0x18
mov byte [rsp + 0x34], al
mov eax, r11d
shr r11d, 8
shr eax, 0x10
mov byte [rsp + 0x36], r11b
xor ecx, ecx
mov byte [rsp + 0x35], al
mov al, byte [rsp + rcx + 0x28]
inc rcx
xor byte [rsp + rcx + 0x37], al
cmp rcx, rbp
jb 0x36066
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x38]
call fcn.00036660
lea r8, [rsp + 0x28]
lea rdx, [rsp + 0x38]
mov rcx, rbx
call qword [r14 + 0x38]
lea rdx, [rsp + 0x28]
mov r8, r13
mov rcx, r12
call fcn.0003a6f0
lea rcx, [rsp + 0x48]
mov r8, rbp
xor edx, edx
call fcn.0003bc80
mov rsi, qword [rsp + 0xe0]
mov edi, 0xd
cmp rdi, rbp
mov rbx, rbp
cmovb rbx, rdi
xor edx, edx
test rbx, rbx
je 0x360f1
lea rax, [rsp + 0x48]
mov r8, rsi
sub r8, rax
lea rcx, [rsp + rdx + 0x48]
inc rdx
mov al, byte [r8 + rcx]
xor byte [rcx], al
cmp rdx, rbx
jb 0x360de
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x48]
call fcn.00036660
add rsi, rbx
sub rdi, rbx
jne 0x360c2
mov rdi, qword [rsp + 0xf8]
mov rsi, rdi
test rdi, rdi
je 0x361e0
mov rbp, qword [rsp + 0xe8]
mov r13, qword [rsp + 0x20]
mov ebx, 0x10
lea rax, [rsp + 0x47]
cmp rsi, rbx
cmovb rbx, rsi
xor ecx, ecx
add byte [rax], 1
jne 0x3614d
inc rcx
dec rax
cmp rcx, 4
jb 0x3613c
lea r8, [rsp + 0x28]
lea rdx, [rsp + 0x38]
mov rcx, r13
call qword [r14 + 0x38]
xor r11d, r11d
test rbx, rbx
je 0x36192
lea rax, [rsp + 0x28]
mov rdx, rbp
mov r8, r15
sub rdx, rax
lea rax, [rsp + 0x28]
sub r8, rax
lea rcx, [rsp + r11 + 0x28]
inc r11
mov al, byte [rdx + rcx]
xor al, byte [rcx]
mov byte [r8 + rcx], al
cmp r11, rbx
jb 0x3617c
xor edx, edx
test rbx, rbx
je 0x361b7
lea rax, [rsp + 0x48]
mov r8, r15
sub r8, rax
lea rcx, [rsp + rdx + 0x48]
inc rdx
mov al, byte [r8 + rcx]
xor byte [rcx], al
cmp rdx, rbx
jb 0x361a4
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x48]
call fcn.00036660
add rbp, rbx
add r15, rbx
sub rsi, rbx
jne 0x36129
mov r13, qword [rsp + 0x108]
lea ebp, [rsi + 0x10]
lea rcx, [rsp + 0x28]
mov r8, rbp
xor edx, edx
call fcn.0003bc80
mov ecx, edi
shl dil, 3
shl ecx, 3
mov byte [rsp + 0x2c], 0
mov byte [rsp + 0x2d], 0
mov eax, ecx
mov byte [rsp + 0x2e], 0
mov byte [rsp + 0x2f], 0x68
shr eax, 0x18
mov byte [rsp + 0x37], dil
mov byte [rsp + 0x34], al
mov eax, ecx
shr ecx, 8
shr eax, 0x10
mov byte [rsp + 0x36], cl
xor ecx, ecx
mov byte [rsp + 0x35], al
mov al, byte [rsp + rcx + 0x28]
inc rcx
xor byte [rsp + rcx + 0x47], al
cmp rcx, rbp
jb 0x3622c
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x48]
call fcn.00036660
test r13, r13
je 0x36269
lea rcx, [rsp + 0x48]
sub rcx, r12
mov al, byte [rcx + r12]
xor byte [r12], al
inc r12
sub r13, 1
jne 0x36258
xor eax, eax
jmp 0x36272
mov eax, 2
mov rcx, qword [rsp + 0x68]
xor rcx, rsp
call fcn.0003a660
add rsp, 0x78
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret