Function at 0x1800ad8b0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], rbx
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xd0
mov eax, dword [rsp + 0x148]
mov r10, rdx
mov rbp, rcx
lea ebx, [rax - 8]
mov dword [rsp + 0x54], ebx
cmp eax, ebx
jbe 0x1800adf62
mov edi, dword [rsp + 0x88]
lea r14d, [rax - 0x103]
mov ebx, dword [rsp + 0x8c]
lea rdx, [0x180000000]
mov esi, dword [rsp + 0x148]
mov ecx, dword [rsp + 0x54]
mov dword [rsp + 0x58], r14d
nop
cmp r14d, 0x14
ja case.default.0x1800ad935
mov ecx, dword [rdx + r14*4 + 0xadfec]
add rcx, rdx
jmp rcx
movups xmm0, xmmword [r8]
mov eax, dword [r10]
lea r8, [rsp + 0xb0]
mov r9d, 0x24
mov dword [rsp + 0x58], eax
lea rdx, [rsp + 0x58]
movaps xmmword [rsp + 0xb0], xmm0
lea rcx, [rsp + 0xc0]
call fcn.180031150
movaps xmm0, xmmword [rsp + 0xc0]
lea rdx, [0x180000000]
mov r8, qword [rsp + 0x120]
mov r10, qword [rsp + 0x118]
movdqa xmmword [rsp + 0xb0], xmm0
jmp case.0x1800ad935.5
mov rax, qword [rsp + 0x150]
mov r8, qword [rsp + 0x120]
mov rcx, qword [rax]
mov edx, dword [rcx + 0x18]
add edx, dword [rsp + 0x94]
mov eax, dword [rcx + 0x1c]
add eax, dword [rsp + 0x94]
mov dword [rsp + 0x84], eax
mov rax, qword [rsp + 0x140]
mov dword [rsp + 0x80], edx
lea rdx, [0x180000000]
mov esi, dword [rax]
mov dword [rsp + 0x148], esi
jmp case.0x1800ad935.5
mov rcx, qword [rsp + 0x150]
mov r9d, dword [rsp + 0x70]
mov ebp, dword [rsp + 0x80]
mov r15d, dword [rsp + 0x74]
mov rdx, qword [rcx + 8]
mov ecx, dword [rsp + 0x94]
neg ecx
mov r13d, dword [rdx + 0x20]
mov dword [rsp + 0x98], r13d
cmp r9d, ecx
jl 0x1800adcf3
mov rax, qword [rsp + 0x130]
movsxd r12, dword [rax]
lea eax, [r12 + r9]
cmp eax, ebp
jg 0x1800adcf3
cmp r15d, ecx
jl 0x1800adcf3
mov r8d, dword [rsp + 0x84]
lea eax, [r12 + r15]
cmp eax, r8d
jg 0x1800adcf3
mov r10d, dword [rsp + 0x90]
mov r11d, dword [rsp + 0x50]
cmp r10d, ecx
jl 0x1800adcf8
lea eax, [r12 + r10]
cmp eax, ebp
jg 0x1800adcf8
cmp r11d, ecx
jl 0x1800adcf8
lea eax, [r12 + r11]
cmp eax, r8d
jg 0x1800adcf8
mov r8d, dword [rsp + 0x60]
mov eax, r15d
imul eax, r8d
add eax, r9d
movsxd rbp, eax
mov rax, qword [rsp + 0x150]
mov rax, qword [rax]
add rbp, qword [rax]
mov eax, r11d
imul eax, r13d
mov qword [rsp + 0xa0], rbp
add eax, r10d
movsxd rcx, eax
add rcx, qword [rdx]
cmp dword [0x1801143dc], 0
mov qword [rsp + 0x68], rcx
je 0x1800adb34
cmp r12d, 4
jl 0x1800adb34
lea rax, [rsp + 0x148]
mov dword [rsp + 0x58], r8d
mov qword [rsp + 0x30], rax
lea r9, [rsp + 0x68]
lea rax, [rsp + 0x58]
mov qword [rsp + 0x28], rbp
mov rdx, rcx
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x98]
mov dword [rsp + 0x68], r12d
mov ecx, 0x97
mov dword [rsp + 0x98], r12d
mov dword [rsp + 0x148], r13d
call fcn.18008caf0
add esi, eax
jmp 0x1800ade93
test r12d, r12d
jle 0x1800ade9a
mov edi, dword [rsp + 0x148]
xor r13d, r13d
movsxd rbx, dword [rsp + 0x98]
xor r15d, r15d
mov eax, r12d
xorps xmm3, xmm3
mov qword [rsp + 0x78], rax
xorps xmm2, xmm2
xor edx, edx
cmp r12d, 0x20
jb 0x1800adbde
mov ecx, r12d
and ecx, 0x8000001f
jge 0x1800adb7a
dec ecx
or ecx, 0xffffffe0
inc ecx
mov eax, r12d
xor r8d, r8d
sub eax, ecx
mov rcx, qword [rsp + 0x68]
movsxd r9, eax
add rcx, r13
lea rax, [r15 + rbp]
movdqu xmm0, xmmword [rax]
add edx, 0x20
add r8, 0x20
movdqu xmm1, xmmword [rcx]
lea rcx, [rcx + 0x20]
lea rax, [rax + 0x20]
psadbw xmm1, xmm0
movdqu xmm0, xmmword [rax - 0x10]
paddd xmm1, xmm3
movdqa xmm3, xmm1
movdqu xmm1, xmmword [rcx - 0x10]
psadbw xmm1, xmm0
paddd xmm1, xmm2
movdqa xmm2, xmm1
cmp r8, r9
jl 0x1800adb91
mov rcx, qword [rsp + 0x68]
mov rax, qword [rsp + 0x78]
mov r8d, dword [rsp + 0x60]
xor esi, esi
movsxd r10, edx
xor r14d, r14d
cmp r10, r12
jge 0x1800adc9e
mov rax, r12
sub rax, r10
cmp rax, 2
jl 0x1800adc70
lea r9, [r10 + 1]
mov r8, r12
sub r8, r10
add r9, r15
sub r8, 2
add r9, rbp
mov rax, r13
shr r8, 1
sub rax, r15
sub rax, rbp
inc r8
lea rbp, [rax + rcx]
lea r10, [r10 + r8*2]
nop word [rax + rax]
movzx ecx, byte [r9 - 1]
movzx eax, byte [r9 + rbp - 1]
lea r9, [r9 + 2]
sub eax, ecx
movzx ecx, byte [r9 - 2]
cdq
xor eax, edx
sub eax, edx
add esi, eax
movzx eax, byte [r9 + rbp - 2]
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
add r14d, eax
sub r8, 1
jne 0x1800adc30
mov rbp, qword [rsp + 0xa0]
cmp r10, r12
jge 0x1800adc8e
mov rcx, qword [rsp + 0x68]
lea rax, [r10 + r13]
movzx eax, byte [rax + rcx]
lea rcx, [r15 + r10]
movzx edx, byte [rcx + rbp]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
add edi, eax
mov r8d, dword [rsp + 0x60]
lea eax, [r14 + rsi]
add edi, eax
mov rax, qword [rsp + 0x78]
movsxd rcx, r8d
add r13, rbx
add r15, rcx
mov rcx, qword [rsp + 0x68]
sub rax, 1
mov qword [rsp + 0x78], rax
jne 0x1800adb60
mov ebx, dword [rsp + 0x8c]
paddd xmm2, xmm3
movdqa xmm0, xmm2
mov dword [rsp + 0x148], edi
mov esi, dword [rsp + 0x148]
mov edi, dword [rsp + 0x88]
psrldq xmm0, 8
paddd xmm2, xmm0
movd eax, xmm2
add esi, eax
jmp 0x1800ade8e
mov r11d, dword [rsp + 0x50]
mov rax, qword [rsp + 0x150]
mov rax, qword [rax]
mov r12, qword [rax]
mov rax, qword [rdx]
mov qword [rsp + 0x98], rax
mov rax, qword [rsp + 0x130]
mov eax, dword [rax]
test eax, eax
jle 0x1800ade9a
mov r10d, r11d
mov qword [rsp + 0x68], rax
sub r15d, r11d
mov qword [rsp + 0x78], rax
mov r11d, eax
nop word [rax + rax]
mov r14d, dword [rsp + 0x90]
sub r14d, dword [rsp + 0x70]
mov qword [rsp + 0xa0], r11
nop word [rax + rax]
mov r11d, 0x120
nop word [rax + rax]
mov eax, r11d
sub eax, 0x120
je 0x1800ade25
sub eax, 1
je 0x1800ade0a
cmp eax, 1
jne 0x1800ade3e
mov r8d, dword [rsp + 0x84]
lea edx, [r15 + r10]
dec r8d
mov eax, ecx
cmp ecx, edx
cmovle eax, edx
cmp r8d, eax
jge 0x1800addb0
mov edx, r8d
jmp 0x1800addb5
cmp ecx, edx
cmovg edx, ecx
cmp ecx, r10d
mov eax, ecx
cmovle eax, r10d
cmp r8d, eax
jl 0x1800addcd
cmp ecx, r10d
mov r8d, r10d
cmovg r8d, ecx
imul edx, dword [rsp + 0x60]
imul r8d, r13d
lea eax, [rbx + rdx]
cdqe
movzx edx, byte [rax + r12]
lea eax, [rdi + r8]
mov r8, qword [rsp + 0x98]
cdqe
movzx eax, byte [rax + r8]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
add dword [rsp + 0x148], eax
mov esi, dword [rsp + 0x148]
jmp 0x1800ade3e
lea edx, [r14 + r9]
mov eax, ecx
cmp ecx, edx
lea edi, [rbp - 1]
cmovle eax, edx
cmp edi, eax
jl 0x1800ade3e
cmp ecx, edx
mov edi, edx
cmovg edi, ecx
jmp 0x1800ade3e
cmp ecx, r9d
lea ebx, [rbp - 1]
mov eax, ecx
cmovle eax, r9d
cmp ebx, eax
jl 0x1800ade3e
cmp ecx, r9d
mov ebx, r9d
cmovg ebx, ecx
inc r11d
cmp r11d, 0x123
jb 0x1800add70
inc r9d
sub qword [rsp + 0xa0], 1
jne 0x1800add60
mov r11, qword [rsp + 0x68]
inc r10d
sub qword [rsp + 0x78], 1
mov r9d, dword [rsp + 0x70]
mov dword [rsp + 0x148], esi
jne 0x1800add40
mov dword [rsp + 0x88], edi
mov dword [rsp + 0x8c], ebx
mov r14d, dword [rsp + 0x58]
mov dword [rsp + 0x148], esi
mov r8, qword [rsp + 0x120]
lea rdx, [0x180000000]
mov r10, qword [rsp + 0x118]
mov dword [rsp + 0xb0], esi
jmp case.0x1800ad935.5
mov r9, qword [rsp + 0x138]
mov rax, qword [rsp + 0x150]
movsx edx, word [r9]
movsx ecx, word [r9 + 4]
add edx, 4
mov rax, qword [rax]
add ecx, 4
sar ecx, 3
add ecx, dword [r8]
mov dword [rsp + 0x90], ecx
movsx ecx, word [r9 + 2]
mov eax, dword [rax + 0x30]
add ecx, 4
sar ecx, 3
add ecx, dword [r10]
mov dword [rsp + 0x74], ecx
movsx ecx, word [r9 + 6]
sar edx, 3
add ecx, 4
add edx, dword [r8]
sar ecx, 3
add ecx, dword [r10]
mov dword [rsp + 0x70], edx
lea rdx, [0x180000000]
mov dword [rsp + 0x50], ecx
mov dword [rsp + 0x94], eax
jmp case.0x1800ad935.5
mov rax, qword [rsp + 0x150]
mov rax, qword [rax]
mov eax, dword [rax + 0x20]
mov dword [rsp + 0x60], eax
mov ecx, dword [rsp + 0x54]
dec r14d
mov dword [rsp + 0x58], r14d
lea eax, [r14 + 0x103]
cmp eax, ecx
ja 0x1800ad920
mov rbp, qword [rsp + 0x110]
movaps xmm0, xmmword [rsp + 0xb0]
mov rbx, qword [rsp + 0x128]
mov rax, rbp
movups xmmword [rbp], xmm0
add rsp, 0xd0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
movzx eax, byte [r8]
lea rcx, [rsp + 0xc0]
mov byte [rsp + 0x148], al
xor r9d, r9d
lea rax, [rsp + 0x148]
xor r8d, r8d
mov qword [rsp + 0x48], rax
xor edx, edx
xor eax, eax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], 0x22
mov qword [rsp + 0x20], rax
call fcn.18002ff10
movups xmm0, xmmword [rsp + 0xc0]
mov rbp, qword [rsp + 0x110]
jmp 0x1800adf6a