Function at 0x422cf0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
test rdx, rdx
je 0x422da9
mov ebp, r9d
mov r14d, r8d
mov r12, rdx
mov rdi, rcx
mov r15, qword [rsp + 0xe8]
mov rsi, qword [rsp + 0xd8]
test rsi, rsi
setne al
test r15, r15
sete cl
cmp al, cl
je 0x422d3a
test rsi, rsi
jne 0x422da9
mov r13, qword [rsp + 0xe0]
test r15, r15
setne al
test r13, r13
setne cl
mov rdx, r15
or rdx, r13
je 0x422d5a
and cl, al
je 0x422da9
cmp qword [rsp + 0xf8], 0
setne cl
sete dl
cmp qword [rsp + 0xf0], 0
sete al
setne bl
and bl, dl
and al, cl
or al, bl
lea ecx, [r14 + 1]
cmp ecx, 0x80
seta cl
test cl, al
jne 0x422da9
xor cl, al
jne 0x422da9
mov rcx, r12
call fcn.005f4bd8
not eax
or rax, 0xffffffffc00000ff
cmp rax, 0xffffffffffffffff
je 0x422deb
lea rax, [0x005fb813]
mov qword [rsp + 0x20], rax
lea rdx, [0x005fc003]
lea r8, [0x0060752f]
mov esi, 0x15
mov ecx, 0x15
mov r9d, 0x2a182
call fcn.00408970
mov eax, esi
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rdx, qword [rsp + 0x100]
mov rcx, qword [rsp + 0xd0]
mov ebx, ebp
xor ebx, 0xffc7f7ff
and ebx, ebp
and ebp, 7
cmp ebp, 4
mov dword [rsp + 0x64], ebx
jae 0x422e1e
test ebp, ebp
jne 0x422f1d
jmp 0x422f11
je 0x422f18
cmp ebp, 5
jne 0x422f11
mov eax, ebx
and eax, 1
mov r9d, ebx
xor r9d, 1
or r9d, eax
mov qword [rsp + 0x50], rdx
mov rax, qword [rsp + 0xf8]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0xf0]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], r15
mov qword [rsp + 0x30], r13
mov rbx, rsi
mov qword [rsp + 0x28], rsi
mov rbp, rcx
mov qword [rsp + 0x20], rcx
mov rcx, rdi
mov rdx, r12
mov r8d, r14d
call fcn.00422cf0
mov esi, eax
test eax, eax
jne 0x422dd8
mov r9d, dword [rsp + 0x64]
mov eax, r9d
not eax
and eax, 0x2b764801
mov ecx, r9d
and ecx, 0xd489b7fe
or ecx, eax
xor ecx, 0x2b764803
and r9d, 2
or r9d, ecx
mov rax, qword [rsp + 0x100]
mov qword [rsp + 0x50], rax
mov rax, qword [rsp + 0xf8]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0xf0]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], r15
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], rbp
mov rcx, rdi
mov rdx, r12
mov r8d, r14d
call fcn.00422cf0
mov esi, eax
test eax, eax
jne 0x422dd8
mov ebp, 3
mov rsi, rbx
jmp 0x422f1d
mov ebp, 1
jmp 0x422f1d
mov ebp, 2
mov byte [rsp + 0x20], 0
mov rcx, rdi
mov rdx, r12
mov r8d, r14d
mov r9d, ebp
call fcn.00423170
test rax, rax
je 0x422f79
mov ecx, dword [rax + 4]
mov edx, ecx
xor edx, 0xfffffffc
and edx, ecx
cmp edx, ebp
jne 0x422f79
movsx eax, byte [rax]
cmp eax, r14d
jne 0x422f79
cmp dword [rdi + 0xd8], 0
je 0x423081
lea r8, [0x0060737c]
mov esi, 5
mov rcx, rdi
mov edx, 5
call fcn.0040f2f0
jmp 0x422dd8
test r15, r15
setne al
test rsi, rsi
sete cl
cmp cl, al
je 0x422f9a
xor esi, esi
cmp qword [rsp + 0xd8], 0
je 0x422dd8
mov byte [rsp + 0x20], 1
mov rcx, rdi
mov rdx, r12
mov r8d, r14d
mov r9d, ebp
call fcn.00423170
test rax, rax
je 0x423077
mov rbx, rax
mov rsi, qword [rax + 0x40]
test rsi, rsi
je 0x422fdc
add dword [rsi], 0xffffffff
jne 0x422fdc
mov rcx, qword [rsi + 0x10]
call qword [rsi + 8]
mov rcx, rdi
mov rdx, rsi
call fcn.00408130
mov rdi, qword [rsp + 0x100]
test rdi, rdi
je 0x422fec
add dword [rdi], 1
mov eax, dword [rbx + 4]
mov ecx, eax
not ecx
or ecx, 0xfffffffc
mov edx, dword [rsp + 0x64]
mov ebp, edx
not ebp
mov esi, ecx
and esi, 0xb0e1282
and eax, 1
or eax, esi
mov esi, ebp
and esi, 0xb0e1282
and edx, 0xf4d1ed7d
or edx, esi
xor edx, eax
or ecx, ebp
not ecx
or ecx, edx
and ebp, 0x200000
or ebp, ecx
mov rax, qword [rsp + 0xd8]
test rax, rax
mov qword [rbx + 0x40], rdi
cmovne r13, rax
mov dword [rbx + 4], ebp
mov qword [rbx + 0x18], r13
mov qword [rbx + 0x20], r15
mov rax, qword [rsp + 0xf0]
mov qword [rbx + 0x28], rax
mov rax, qword [rsp + 0xf8]
mov qword [rbx + 0x30], rax
mov rax, qword [rsp + 0xd0]
mov qword [rbx + 8], rax
mov byte [rbx], r14b
xor esi, esi
jmp 0x422dd8
mov esi, 7
jmp 0x422dd8
mov rax, qword [rdi + 8]
test rax, rax
je 0x422f9a
mov ecx, dword [rax + 0xc8]
mov edx, ecx
not edx
and edx, 0xeef52330
and ecx, 0x110adccc
or ecx, edx
xor ecx, 0xeef52331
mov dword [rax + 0xc8], ecx
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x42308e
jmp 0x422f9a