Function at 0x18012b390
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], rbx
mov dword [rsp + 0x20], r8d
mov qword [rsp + 0x10], rdx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
mov r12, qword [rsp + 0xb8]
xor eax, eax
cmp dword [rcx], eax
mov r14d, 0xd
mov dword [rsp + 0x2c], r9d
mov r15, rcx
mov r9d, dword [rsp + 0xc0]
sete al
mov dword [rsp + 0x28], eax
mov r8d, r14d
mov dword [rsp + 0x90], 0
lea eax, [r9 - 1]
movsxd rdx, eax
mov r13, rdx
test eax, eax
js 0x18012b418
nop dword [rax]
nop word [rax + rax]
movzx ecx, byte [r12 + rdx]
lea eax, [r8*8]
xor ecx, eax
xor r8d, ecx
sub rdx, 1
jns 0x18012b400
movzx ecx, byte [rsp + 0xb0]
lea eax, [r8*8]
mov edi, dword [r15 + 0x14]
xor eax, ecx
xor eax, r8d
mov dword [rsp + 0x20], ecx
xor edx, edx
div edi
mov rax, qword [r15 + 0x20]
lea rsi, [rdx*8]
mov ebp, edx
mov qword [rsp + 0x30], rax
mov rbx, qword [rax + rsi]
test rbx, rbx
je 0x18012b492
cmp byte [rbx + 0x30], cl
jne 0x18012b48a
lea eax, [r9 + 1]
cmp dword [rbx + 0x1c], eax
jne 0x18012b48a
movsxd r8, r9d
lea rcx, [rbx + 0x31]
mov rdx, r12
call fcn.1800025db
test eax, eax
je 0x18012b5e9
mov r9d, dword [rsp + 0xc0]
movzx ecx, byte [rsp + 0xb0]
mov rbx, qword [rbx]
test rbx, rbx
jne 0x18012b455
lea eax, [r9 + 1]
mov dword [rsp + 0x24], eax
movsxd rax, r9d
mov qword [rsp + 0x40], rax
inc rax
mov qword [rsp + 0x48], rax
lea rsi, [rax + 0x71]
mov eax, 0x80
cmp rsi, rax
cmovl rsi, rax
mov eax, dword [r15 + 0x10]
add eax, eax
mov qword [rsp + 0x38], rsi
cmp eax, edi
jl 0x18012b6a2
lea ebp, [rdi + rdi]
call fcn.180003c56
test eax, eax
jne 0x18012b997
movsxd rax, ebp
lea rbx, [rax*8]
mov rcx, rbx
call fcn.1801408c0
mov rsi, rax
test rax, rax
je 0x18012b997
mov r8, rbx
xor edx, edx
mov rcx, rax
call fcn.180003b25
xor edi, edi
cmp dword [r15 + 0x14], edi
jle 0x18012b581
mov rbx, qword [rsp + 0x30]
mov r11, qword [rbx]
test r11, r11
je 0x18012b575
nop
mov rax, qword [r11]
mov r10d, r14d
mov qword [rbx], rax
mov eax, dword [r11 + 0x1c]
sub eax, 1
movsxd r8, eax
js 0x18012b55b
lea r9, [r8 + 0x30]
add r9, r11
nop dword [rax]
movzx ecx, byte [r9]
lea edx, [r10*8]
xor edx, ecx
lea r9, [r9 - 1]
xor r10d, edx
sub r8, 1
jns 0x18012b540
xor edx, edx
mov eax, r10d
div ebp
mov rax, qword [rsi + rdx*8]
mov qword [r11], rax
mov qword [rsi + rdx*8], r11
mov r11, qword [rbx]
test r11, r11
jne 0x18012b520
inc edi
add rbx, 8
cmp edi, dword [r15 + 0x14]
jl 0x18012b516
mov rbx, qword [rsp + 0x30]
test rbx, rbx
je 0x18012b65f
cmp dword [0x18028cb60], 0
je 0x18012b656
mov rcx, qword [0x180294f30]
test rcx, rcx
je 0x18012b5ae
call qword [0x18028cbe0]
mov rcx, rbx
call qword [0x18028cb98]
dec qword [0x180294eb8]
mov rcx, rbx
movsxd rdx, eax
sub qword [0x180294e70], rdx
call qword [0x18028cb88]
mov rcx, qword [0x180294f30]
test rcx, rcx
je 0x18012b65f
call qword [0x18028cbf0]
jmp 0x18012b65f
mov ecx, dword [rbx + 0x10]
mov eax, ecx
sub eax, dword [rbx + 0x18]
cmp eax, 0x16
jge 0x18012b644
lea edi, [rcx + rcx]
call fcn.180003c56
test eax, eax
jne 0x18012b997
movsxd rdx, edi
mov rcx, rbx
call fcn.18014dd10
mov r8, rax
test rax, rax
je 0x18012b997
mov dword [rax + 0x10], edi
mov rdx, qword [r15 + 0x20]
add rdx, rsi
mov rcx, qword [rdx]
cmp rcx, rbx
je 0x18012b63e
nop
mov rax, qword [rcx]
mov rdx, rcx
mov rcx, rax
cmp rax, rbx
jne 0x18012b630
mov qword [rdx], r8
mov rbx, r8
mov ebp, dword [rbx + 0x18]
mov rsi, qword [rsp + 0x98]
neg ebp
jmp 0x18012b7aa
mov rcx, rbx
call qword [0x18028cb88]
mov dword [r15 + 0x14], ebp
mov qword [r15 + 0x20], rsi
test r13, r13
js 0x18012b688
nop dword [rax]
movzx ecx, byte [r12 + r13]
lea eax, [r14*8]
xor ecx, eax
xor r14d, ecx
sub r13, 1
jns 0x18012b670
mov rsi, qword [rsp + 0x38]
lea eax, [r14*8]
xor eax, dword [rsp + 0x20]
xor edx, edx
xor eax, r14d
div ebp
mov ebp, edx
call fcn.180003c56
test eax, eax
jne 0x18012b997
mov rcx, rsi
call fcn.1801408c0
mov rbx, rax
test rax, rax
je 0x18012b997
mov r8, qword [rsp + 0x40]
lea rcx, [rbx + 0x31]
xorps xmm0, xmm0
mov rdx, r12
movups xmmword [rax], xmm0
movups xmmword [rax + 0x10], xmm0
movups xmmword [rax + 0x20], xmm0
mov dword [rax + 0x10], esi
movzx eax, byte [rsp + 0xb0]
mov byte [rbx + 0x30], al
call fcn.180002c16
mov eax, dword [rsp + 0x24]
mov rsi, qword [rsp + 0x98]
mov dword [rbx + 0x1c], eax
mov rax, qword [rsp + 0x48]
mov byte [rax + rbx + 0x30], 0
mov eax, dword [rsp + 0xc0]
add eax, 0x31
mov dword [rbx + 0x18], eax
mov eax, ebp
lea rdx, [rax*8]
mov rax, qword [r15 + 0x20]
mov rcx, qword [rdx + rax]
mov qword [rbx], rcx
mov rax, qword [r15 + 0x20]
mov qword [rdx + rax], rbx
inc dword [r15 + 0x10]
movsxd rcx, dword [rbx + 0x18]
add rcx, rbx
cmp rsi, 0x7f
ja 0x18012b753
movzx eax, sil
and al, 0x7f
mov byte [rcx], al
mov eax, 1
jmp 0x18012b77f
cmp rsi, 0x3fff
ja 0x18012b777
mov rax, rsi
shr rax, 7
or al, 0x80
mov byte [rcx], al
movzx eax, sil
and al, 0x7f
mov byte [rcx + 1], al
mov eax, 2
jmp 0x18012b77f
mov rdx, rsi
call fcn.1800b55f0
add eax, dword [rbx + 0x18]
mov ebp, dword [rsp + 0x90]
mov dword [rbx + 0x18], eax
mov dword [rbx + 0x14], eax
mov qword [rbx + 0x28], rsi
cmp dword [r15], 1
je 0x18012b7aa
inc eax
mov dword [rbx + 0x18], eax
mov eax, dword [r15]
neg eax
sbb cx, cx
mov word [rbx + 0x22], cx
mov rax, qword [rbx + 0x28]
cmp rsi, rax
je 0x18012b842
mov rdi, rsi
xor r8d, r8d
mov rdx, rbx
mov rcx, r15
sub rdi, rax
call fcn.1800a6fb0
movsxd rcx, dword [rbx + 0x18]
add rcx, rbx
cmp rdi, 0x7f
ja 0x18012b7e6
and dil, 0x7f
mov eax, 1
mov byte [rcx], dil
jmp 0x18012b811
cmp rdi, 0x3fff
ja 0x18012b809
mov rax, rdi
shr rax, 7
or al, 0x80
and dil, 0x7f
mov byte [rcx], al
mov byte [rcx + 1], dil
mov eax, 2
jmp 0x18012b811
mov rdx, rdi
call fcn.1800b55f0
add eax, dword [rbx + 0x18]
mov edi, 1
mov dword [rbx + 0x18], eax
mov dword [rbx + 0x14], eax
mov qword [rbx + 0x28], rsi
cmp dword [r15], edi
je 0x18012b846
inc eax
mov dword [rbx + 0x18], eax
mov eax, dword [r15]
neg eax
mov dword [rbx + 0x24], 0
sbb cx, cx
mov word [rbx + 0x22], cx
jmp 0x18012b846
mov edi, dword [rsp + 0x28]
movsxd r11, dword [rsp + 0xa8]
test r11d, r11d
js 0x18012b984
mov ecx, dword [r15]
cmp ecx, 1
jne 0x18012b874
mov eax, dword [rbx + 0x18]
mov byte [rbx + 0x21], cl
add eax, ebp
mov rcx, qword [r15 + 8]
add dword [rcx], eax
xor eax, eax
jmp 0x18012b99c
movsx eax, word [rbx + 0x22]
cmp r11d, eax
je 0x18012b8e7
test ecx, ecx
jne 0x18012b92d
movsxd rax, dword [rbx + 0x18]
mov rdx, r11
mov byte [rax + rbx], 1
movsxd rcx, dword [rbx + 0x18]
lea eax, [rcx + 1]
inc rcx
add rcx, rbx
mov dword [rbx + 0x18], eax
cmp r11, 0x7f
ja 0x18012b8b2
and dl, 0x7f
mov eax, 1
mov byte [rcx], dl
jmp 0x18012b8d8
cmp rdx, 0x3fff
ja 0x18012b8d3
mov rax, rdx
shr rax, 7
or al, 0x80
and dl, 0x7f
mov byte [rcx], al
mov byte [rcx + 1], dl
mov eax, 2
jmp 0x18012b8d8
call fcn.1800b55f0
add dword [rbx + 0x18], eax
mov word [rbx + 0x22], r11w
mov dword [rbx + 0x24], 0
mov r11d, dword [rsp + 0x2c]
test edi, edi
je 0x18012b988
movsxd rcx, dword [rbx + 0x18]
mov eax, r11d
sub eax, dword [rbx + 0x24]
add rcx, rbx
add eax, 2
movsxd rdx, eax
cmp rdx, 0x7f
ja 0x18012b934
and dl, 0x7f
mov eax, 1
mov byte [rcx], dl
add dword [rbx + 0x18], eax
mov eax, dword [rbx + 0x18]
mov dword [rbx + 0x24], r11d
add eax, ebp
mov rcx, qword [r15 + 8]
add dword [rcx], eax
xor eax, eax
jmp 0x18012b99c
mov word [rbx + 0x22], r11w
jmp 0x18012b8f4
cmp rdx, 0x3fff
ja 0x18012b969
mov rax, rdx
and dl, 0x7f
shr rax, 7
or al, 0x80
mov byte [rcx + 1], dl
mov byte [rcx], al
mov eax, 2
add dword [rbx + 0x18], eax
mov eax, dword [rbx + 0x18]
mov dword [rbx + 0x24], r11d
add eax, ebp
mov rcx, qword [r15 + 8]
add dword [rcx], eax
xor eax, eax
jmp 0x18012b99c
call fcn.1800b55f0
add dword [rbx + 0x18], eax
mov eax, dword [rbx + 0x18]
mov dword [rbx + 0x24], r11d
add eax, ebp
mov rcx, qword [r15 + 8]
add dword [rcx], eax
xor eax, eax
jmp 0x18012b99c
mov byte [rbx + 0x20], 1
mov eax, dword [rbx + 0x18]
mov rcx, qword [r15 + 8]
add eax, ebp
add dword [rcx], eax
xor eax, eax
jmp 0x18012b99c
mov eax, 7
mov rbx, qword [rsp + 0xa0]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret