Function at 0x180022898
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov qword [rax + 0x20], r9
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x70]
sub rsp, 0x170
mov rdi, rdx
mov rsi, rcx
mov r12d, 0x4b3193b7
mov edx, 0xdb74cde3
mov ecx, r12d
mov r15, r9
mov rbx, r8
call fcn.180038c24
test rax, rax
je 0x1800228fc
xor ecx, ecx
mov edx, 0x8a0
mov r8d, 0x3000
lea r9d, [rcx + 0x40]
call rax
mov r14, rax
jmp 0x1800228ff
xor r14d, r14d
mov qword [rsp + 0x48], r14
test r14, r14
jne 0x180022910
xor al, al
jmp 0x180022e42
mov r8d, 0x800
lea rdx, [0x180022e64]
mov rcx, r14
call fcn.18003152c
mov edx, 0x5ff61e
mov ecx, r12d
call fcn.180038c24
mov edx, 0x2d3a4cb9
mov qword [rbp - 0x58], rax
mov ecx, r12d
call fcn.180038c24
mov edx, 0xc2bcaf86
mov qword [rbp - 0x48], rax
mov ecx, r12d
call fcn.180038c24
mov edx, 0x1c482d01
mov qword [rbp - 0x50], rax
mov ecx, r12d
call fcn.180038c24
mov qword [rbp - 0x40], rsi
xor esi, esi
mov byte [rbp + 0x3c], sil
mov qword [rbp - 0x60], rax
mov qword [rbp - 0x30], rdi
mov qword [rbp - 0x38], rbx
xor edx, edx
xor ecx, ecx
call fcn.1800403bc
mov byte [rbp + 0x3c], al
test al, al
je 0x18002297b
xor edx, edx
lea rcx, [rbp + 0x40]
lea r8d, [rdx + 0x30]
call fcn.1800315e4
xor ecx, ecx
mov qword [rbp - 0x70], rsi
mov r13, rsi
call fcn.180038264
mov edx, 0xd14c3325
mov qword [rsp + 0x60], rax
mov ecx, 0xb28a2f38
mov qword [rbp - 0x78], rsi
mov r12, rsi
mov qword [rbp - 0x68], rsi
mov rdi, rsi
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x70], rsi
mov rbx, rsi
mov qword [rsp + 0x40], rsi
call fcn.180038c24
mov qword [rbp - 0x80], rax
call fcn.180037f94
and qword [rsp + 0x28], rbx
lea r9, [rbp + 0x40]
mov rcx, rax
mov qword [rsp + 0x20], 0x30
xor r8d, r8d
xor edx, edx
call qword [rbp - 0x80]
test eax, eax
jne 0x180022b00
lea rcx, [0x18005bda4]
mov r15, rbx
lea rdx, [fcn.180022898]
mov r14, rbx
mov rbx, qword [rbp + 0x40]
mov rdi, qword [rbp + 0x58]
cmp rcx, rbx
jb 0x180022a3b
lea rax, [rdi + rbx]
cmp rcx, rax
jae 0x180022a3b
mov r14, rbx
mov qword [rbp - 0x68], rdi
cmp rdx, rbx
jb 0x180022a53
lea rax, [rdi + rbx]
cmp rdx, rax
jae 0x180022a53
mov qword [rsp + 0x58], rbx
mov qword [rsp + 0x70], rdi
call fcn.180031070
mov rcx, qword [rbp + 0x40]
cmp rcx, rax
jne 0x180022a69
mov r15, rbx
mov qword [rsp + 0x40], rdi
cmp rcx, qword [0x180064630]
jne 0x180022a79
mov r13, rbx
mov qword [rbp - 0x70], rdi
cmp rcx, qword [rsp + 0x60]
jne 0x180022a87
mov r12, rbx
mov qword [rbp - 0x78], rdi
test r14, r14
je 0x180022aa3
cmp qword [rsp + 0x58], 0
je 0x180022aa3
test r15, r15
je 0x180022aa3
test r12, r12
je 0x180022aa3
test r13, r13
jne 0x180022ae0
add rsi, rdi
call fcn.180037f94
and qword [rsp + 0x28], 0
lea r9, [rbp + 0x40]
mov rcx, rax
mov qword [rsp + 0x20], 0x30
xor r8d, r8d
mov rdx, rsi
call qword [rbp - 0x80]
lea rcx, [0x18005bda4]
lea rdx, [fcn.180022898]
test eax, eax
je 0x180022a1e
mov qword [rsp + 0x50], r14
mov rdi, qword [rsp + 0x50]
mov r14, qword [rsp + 0x48]
mov qword [rsp + 0x38], r15
mov rbx, qword [rsp + 0x38]
mov r15, qword [rbp + 0xb8]
mov rax, qword [rbp - 0x78]
lea rdx, [rbp - 0x60]
mov qword [rbp - 0x10], rax
mov r8d, 0xa0
mov rax, qword [rbp - 0x70]
mov qword [rbp - 0x20], rax
mov rax, qword [rbp - 0x68]
mov qword [rbp], rax
mov rax, qword [rsp + 0x58]
mov qword [rbp + 8], rax
mov rax, qword [rsp + 0x70]
mov qword [rbp - 8], rdi
lea rdi, [r14 + 0x800]
mov qword [rbp + 0x10], rax
mov rcx, rdi
mov rax, qword [rsp + 0x40]
mov qword [rbp + 0x20], rax
mov qword [rbp - 0x18], r12
mov qword [rbp - 0x28], r13
mov qword [rbp + 0x18], rbx
call fcn.18003152c
xor ecx, ecx
call fcn.18003966c
call fcn.1800398ec
mov ebx, 0x4b3193b7
mov dword [rsp + 0x38], eax
mov ecx, ebx
mov edx, 0x6aee4656
call fcn.180038c24
mov edx, 0x6fcc6c98
mov qword [rsp + 0x40], rax
mov ecx, ebx
call fcn.180038c24
mov edx, 0xeac87e10
mov ecx, ebx
mov r12, rax
call fcn.180038c24
mov edx, 0x42d0c619
mov qword [rsp + 0x60], rax
mov ecx, ebx
call fcn.180038c24
mov edx, 0xbcd21ad5
mov ecx, ebx
call fcn.180038c24
mov edx, 0x32e27bec
mov ecx, ebx
call fcn.180038c24
mov r13, qword [0x1800643c0]
movabs rsi, 0x46fb2ecfece84e10
cmp r13, rsi
je 0x180022c9d
lea rcx, [rsp + 0x30]
call fcn.180030f7c
lea rdi, [r13 + 0x38]
xor esi, esi
mov rcx, rdi
call fcn.180032844
movsxd rcx, eax
shr rcx, 2
test ecx, ecx
jle 0x180022c82
mov r14d, dword [rsp + 0x38]
xor ebx, ebx
mov r15, qword [rsp + 0x40]
mov edx, ebx
mov rcx, rdi
call fcn.180031fb0
cmp dword [rax], r14d
je 0x180022c5e
mov edx, ebx
mov rcx, rdi
call fcn.180031fb0
xor edx, edx
mov r8d, dword [rax]
lea ecx, [rdx + 2]
call r15
mov qword [rsp + 0x70], rax
mov byte [rsp + 0x78], 1
lea rcx, [rax - 1]
cmp rcx, 0xfffffffffffffffd
ja 0x180022c54
mov rcx, rax
call r12
cmp byte [rsp + 0x78], 0
je 0x180022c5e
lea rcx, [rsp + 0x70]
call fcn.1800316cc
mov rcx, rdi
inc esi
add ebx, 4
call fcn.180032844
movsxd rcx, eax
shr rcx, 2
cmp esi, ecx
jl 0x180022c0f
mov r14, qword [rsp + 0x48]
mov r15, qword [rbp + 0xb8]
lea rcx, [rsp + 0x30]
call fcn.180030fc8
lea rdi, [r14 + 0x800]
movabs rsi, 0x46fb2ecfece84e10
mov rcx, r15
xor ebx, ebx
call fcn.180032844
test eax, eax
jle 0x180022cc8
mov edx, ebx
mov rcx, r15
call fcn.180031fb0
mov cl, byte [rbp + 0x3c]
inc ebx
xor byte [rax], cl
mov rcx, r15
call fcn.180032844
cmp ebx, eax
jl 0x180022cab
mov rax, qword [0x180064638]
test rax, rax
je 0x180022d06
mov ecx, dword [rax + 0x410]
test ecx, ecx
je 0x180022d06
mov r10, qword [rax + 0x418]
xor r9d, r9d
test ecx, ecx
je 0x180022d06
mov al, byte [rbp + 0x3c]
xor byte [r9 + r10], al
inc r9d
mov rax, qword [0x180064638]
cmp r9d, dword [rax + 0x410]
jb 0x180022cec
mov rcx, rdi
call r14
mov r8d, 0xa0
lea rcx, [rbp - 0x60]
mov rdx, rdi
call fcn.18003152c
mov rax, qword [0x180064638]
test rax, rax
je 0x180022d59
mov ecx, dword [rax + 0x410]
test ecx, ecx
je 0x180022d59
mov r8, qword [rax + 0x418]
xor edx, edx
test ecx, ecx
je 0x180022d59
mov al, byte [rbp + 0x3c]
xor byte [rdx + r8], al
inc edx
mov rax, qword [0x180064638]
cmp edx, dword [rax + 0x410]
jb 0x180022d41
mov rcx, r15
xor ebx, ebx
call fcn.180032844
test eax, eax
jle 0x180022d84
mov edx, ebx
mov rcx, r15
call fcn.180031fb0
mov cl, byte [rbp + 0x3c]
inc ebx
xor byte [rax], cl
mov rcx, r15
call fcn.180032844
cmp ebx, eax
jl 0x180022d67
cmp r13, rsi
je 0x180022e1f
lea rdi, [r13 + 0x38]
xor esi, esi
mov rcx, rdi
call fcn.180032844
movsxd rcx, eax
shr rcx, 2
test ecx, ecx
jle 0x180022e1f
mov r14d, dword [rsp + 0x38]
xor ebx, ebx
mov r15, qword [rsp + 0x60]
mov edx, ebx
mov rcx, rdi
call fcn.180031fb0
cmp dword [rax], r14d
je 0x180022e02
mov edx, ebx
mov rcx, rdi
call fcn.180031fb0
xor edx, edx
mov r8d, dword [rax]
lea ecx, [rdx + 2]
call qword [rsp + 0x40]
mov qword [rsp + 0x60], rax
mov byte [rsp + 0x68], 1
lea rcx, [rax - 1]
cmp rcx, 0xfffffffffffffffd
ja 0x180022df8
mov rcx, rax
call r15
cmp byte [rsp + 0x68], 0
je 0x180022e02
lea rcx, [rsp + 0x60]
call fcn.1800316cc
mov rcx, rdi
inc esi
add ebx, 4
call fcn.180032844
movsxd rdx, eax
shr rdx, 2
cmp esi, edx
jl 0x180022db2
mov r14, qword [rsp + 0x48]
mov edx, 0x1fe93574
mov ecx, 0x4b3193b7
call fcn.180038c24
test rax, rax
je 0x180022e40
xor edx, edx
mov r8d, 0x8000
mov rcx, r14
call rax
mov al, 1
lea r11, [rsp + 0x170]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret