Function at 0x1400ae820
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x128
movaps xmmword [rsp + 0x110], xmm6
mov r15, rdx
mov rax, qword [0x140231040]
xor rax, rsp
mov qword [rsp + 0x108], rax
test r8, r8
je 0x1400af4a5
mov rdi, r8
mov r12, rcx
mov eax, dword [r8]
cmp eax, 4
je 0x1400af38a
mov dword [rsp + 0x4c], eax
mov eax, dword [rdi + 4]
mov dword [rsp + 0x50], eax
mov eax, dword [rdi + 8]
mov dword [rsp + 0x54], eax
mov eax, dword [rdi + 0xc]
mov dword [rsp + 0x38], eax
mov ebp, dword [rdi + 0x10]
mov eax, dword [rdi + 0x14]
mov r13d, dword [rdi + 0x18]
mov rcx, qword [r12 + 8]
lea r8d, [rax + 0x14]
xor edx, edx
cmp r8d, 0x54
jb 0x1400ae8f9
mov r9d, eax
and r9d, 7
jne 0x1400ae8f9
mov r9d, dword [rcx + 0x14]
cmp r9d, r8d
jb 0x1400af467
mov r8, qword [rcx + 8]
mov edx, dword [r8 + rax + 4]
cmp edx, 0xc8799269
jne 0x1400af467
add r8, rax
mov edx, dword [r8]
cmp edx, 0x14
jb 0x1400af467
xor edx, edx
mov r10d, dword [r8]
add r10d, eax
jb 0x1400ae8f9
cmp r10d, r9d
ja 0x1400ae8f9
mov r9d, dword [r8 + 8]
xor edx, edx
cmp r9d, 0xbcea225b
cmove rdx, r8
lea rsi, [rdx + 0x10]
test rdx, rdx
cmove rsi, rdx
lea r9d, [rax + 0x10]
xor edx, edx
cmp r9d, 0x50
jb 0x1400ae987
mov r8d, eax
and r8d, 7
jne 0x1400ae987
mov r8d, dword [rcx + 0x14]
cmp r8d, r9d
jb 0x1400af460
mov r9, qword [rcx + 8]
mov edx, dword [r9 + rax + 4]
cmp edx, 0xc8799269
jne 0x1400af460
add r9, rax
mov edx, dword [r9]
cmp edx, 0x10
jb 0x1400af460
mov r10d, dword [r9]
add r10d, eax
setb r11b
xor edx, edx
test r9, r9
je 0x1400ae987
test r11b, r11b
jne 0x1400ae987
cmp r10d, r8d
ja 0x1400ae987
mov edx, dword [r9]
cmp rdx, 0x11
jb 0x1400af459
add eax, edx
jb 0x1400af459
cmp eax, r8d
ja 0x1400af459
add rdx, 0xfffffffffffffff0
mov qword [rsp + 0x40], r12
test rsi, rsi
je 0x1400af4a5
cmp ebp, 2
jb 0x1400af4a5
cmp ebp, 0x3ffffffe
ja 0x1400af4a5
lea r12d, [rbp + 1]
lea r14, [r12*4]
cmp rdx, r14
jb 0x1400af4a5
mov ecx, 0x20
call fcn.14012aa30
mov rbx, rax
mov rcx, r14
call fcn.14012aa30
mov qword [rbx], rax
mov qword [rbx + 8], rax
lea rcx, [rax + r12*4]
mov qword [rbx + 0x10], rcx
xor edx, edx
nop word cs:[rax + rax]
mov r8, rax
add r8, rdx
je 0x1400af492
mov dword [r8], 0
add rdx, 4
cmp r14, rdx
jne 0x1400ae9f0
mov qword [rbx + 8], rcx
mov qword [rbx + 0x18], 0
test r12, r12
je 0x1400af47f
mov ecx, dword [rsi]
mov dword [rax], ecx
mov eax, 1
nop word [rax + rax]
mov ecx, dword [rsi + rax*4]
cmp ecx, dword [rsi + rax*4 - 4]
jle 0x1400af442
mov rdx, qword [rbx]
mov r8, qword [rbx + 8]
sub r8, rdx
sar r8, 2
cmp r8, rax
jbe 0x1400af47f
mov dword [rdx + rax*4], ecx
inc rax
cmp r12, rax
jne 0x1400aea30
mov rax, qword [rbx]
mov rdx, qword [rbx + 8]
mov rcx, rdx
sub rcx, rax
je 0x1400af4c4
js 0x1400af4cc
mov r8, rcx
shr r8, 2
test cl, 1
jne 0x1400af3ca
mov r9, rax
lea r10, [rdx - 1]
cmp r10, rax
je 0x1400aead0
lea r10, [0x140210ae0]
nop dword [rax + rax]
movzx r11d, byte [r9]
movzx esi, r8b
xor esi, r11d
shr r8d, 8
xor r8d, dword [r10 + rsi*4]
movzx r11d, byte [r9 + 1]
movzx esi, r8b
xor esi, r11d
shr r8d, 8
xor r8d, dword [r10 + rsi*4]
add r9, 2
cmp r9, rdx
jne 0x1400aeaa0
mov dword [rbx + 0x18], r8d
cmp r8d, r13d
jne 0x1400af442
test rbx, rbx
je 0x1400af44b
sar rcx, 2
cmp rcx, r12
jne 0x1400af44d
test rbp, rbp
je 0x1400af4b1
mov ecx, dword [rsp + 0x54]
cmp dword [rax + 4], ecx
jne 0x1400af44d
lea ecx, [rbp - 1]
cmp r12d, ecx
jbe 0x1400af4b1
mov ecx, ecx
mov edx, dword [rsp + 0x38]
cmp dword [rax + rcx*4], edx
mov r12, qword [rsp + 0x40]
jne 0x1400af44d
mov rcx, qword [r12 + 0x10]
test rcx, rcx
jne 0x1400af1d1
mov rcx, rbx
call fcn.1400af750
mov rsi, rax
xor ebx, ebx
lea r14, [rbp*8]
mov ecx, dword [rdi + 0x1c]
mov r12, qword [r12 + 8]
test ecx, ecx
mov qword [rsp + 0x58], r15
jne 0x1400af1ea
mov qword [rsp + 0x38], rsi
movabs rsi, 0xfffffffc00000000
movabs r15, 0xaaaaaaaaaaaaaaaa
mov qword [rsp + 0x90], r15
mov rax, r12
and rax, rsi
cmp rax, qword [0x1402336c8]
je 0x1400af1b7
lea r13, [rdi + 0x1c]
mov qword [rsp + 0x80], r12
mov dword [rsp + 0x88], 0x53215531
cmp ebp, 0x1fffffff
ja 0x1400af4e3
mov eax, r14d
mov dword [rsp + 0x8c], eax
mov dword [rsp + 0x90], 0
mov r12, r13
and r12, rsi
cmp r12, qword [0x1402336c8]
je 0x1400af4eb
mov qword [rsp + 0x98], r13
mov qword [rsp + 0x70], r15
mov rax, qword [rsp + 0x40]
mov r15, qword [rax + 8]
mov rax, r15
and rax, rsi
cmp rax, qword [0x1402336c8]
je 0x1400af1c4
lea eax, [rbp*4]
mov qword [rsp + 0x60], r15
mov dword [rsp + 0x68], 0x53215531
cmp ebp, 0x1fffffff
ja 0x1400af4f8
mov ebp, dword [rsp + 0x4c]
mov dword [rsp + 0x6c], r14d
mov dword [rsp + 0x70], eax
cmp r12, qword [0x1402336c8]
je 0x1400af501
mov qword [rsp + 0x78], r13
cmp ebp, 3
ja case.default.0x1400aec65
lea r13, [rdi + 0x50]
mov eax, ebp
lea rcx, [0x140216b74]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov ecx, 0x28
call fcn.14012aa30
mov r15, rax
mov qword [rax + 8], r13
mov dword [rax + 0x10], 0
lea rax, [0x140201628]
mov qword [r15], rax
xorps xmm6, xmm6
movups xmmword [r15 + 0x18], xmm6
mov rcx, r13
call fcn.14014aab0
lea r12, [rsp + 0xb8]
movups xmmword [r12 + 0x34], xmm6
movups xmmword [r12 + 0x28], xmm6
movups xmmword [r12 + 0x18], xmm6
movups xmmword [r12 + 8], xmm6
movups xmmword [r12 - 8], xmm6
movaps xmm0, xmmword [0x14020fc90]
movups xmmword [r12 - 0x18], xmm0
test rax, rax
je 0x1400aed0f
mov rbp, rax
lea eax, [rax*8]
mov rcx, rbp
shr rcx, 0x1d
mov dword [rsp + 0xb4], ecx
mov dword [rsp + 0xb0], eax
mov r8, rbp
cmp rbp, 0x40
jae 0x1400af282
mov dword [rsp + 0xf8], ebp
mov rcx, r12
mov rdx, r13
call fcn.140163ed0
mov qword [rsp + 0x40], rdi
lea r13, [rdi + 0x20]
mov eax, dword [rsp + 0xf8]
lea rcx, [rax + 1]
mov edi, dword [rsp + 0xb0]
mov r14d, dword [rsp + 0xb4]
mov byte [rsp + rax + 0xb8], 0x80
cmp rax, 0x38
jae 0x1400af172
cmp rcx, 0x38
je 0x1400aed5d
mov r8d, 0x38
sub r8, rcx
add rcx, r12
xor edx, edx
call fcn.140164570
lea rbp, [rsp + 0xa0]
mov dword [rbp + 0x50], edi
mov dword [rbp + 0x54], r14d
mov r8d, 1
mov rcx, rbp
mov rdx, r12
call fcn.14007dc80
mov r14, qword [rbp]
mov ecx, 0x50
call fcn.14012aa30
mov r12, rax
lea rax, [0x140201458]
mov qword [r12], rax
mov qword [r12 + 8], 0
mov rax, r13
and rax, rsi
cmp rax, qword [0x1402336c8]
je 0x1400af527
mov qword [r12 + 0x10], r13
cmp qword [r13], 0
mov rdi, qword [rsp + 0x40]
jne 0x1400aedcd
bswap r14
mov qword [r13], r14
lea rax, [0x1402011b8]
mov qword [r12], rax
mov r13, qword [rsp + 0x38]
mov r14, r13
and r14, rsi
cmp r14, qword [0x1402336c8]
jne 0x1400aedf4
mov rcx, r13
call fcn.1400a3490
mov qword [r12 + 0x18], r13
mov rax, qword [r13 + 8]
sub rax, qword [r13]
sar rax, 2
dec rax
mov qword [r12 + 0x20], rax
mov qword [r12 + 0x28], 0
je 0x1400af521
lea rbp, [rsp + 0x88]
lea rax, [0x1402012b8]
mov qword [r12], rax
mov r13, qword [rbp - 8]
mov rax, r13
and rax, rsi
cmp rax, qword [0x1402336c8]
je 0x1400af064
mov qword [r12 + 0x30], r13
mov eax, dword [rbp + 8]
mov dword [r12 + 0x40], eax
mov rax, qword [rbp]
mov qword [r12 + 0x38], rax
mov r13, qword [rsp + 0x98]
mov rax, r13
and rax, rsi
cmp rax, qword [0x1402336c8]
je 0x1400af534
mov qword [r12 + 0x48], r13
mov rax, qword [r12 + 0x10]
mov eax, dword [rax + 0x14]
cmp eax, 0xffffffff
je 0x1400af2b2
lea r13, [rdi + 0x38]
lea rax, [r15 + 0x18]
mov rcx, qword [rax]
mov qword [rax], r12
test rcx, rcx
jne 0x1400af55b
mov rax, qword [r12 + 0x10]
mov rbp, qword [rax]
mov ecx, 0x50
call fcn.14012aa30
mov r12, rax
mov qword [rax + 8], 0
mov rax, r13
and rax, rsi
cmp rax, qword [0x1402336c8]
je 0x1400af541
mov qword [r12 + 0x10], r13
cmp qword [r13], 0
jne 0x1400aeee4
mov qword [r13], rbp
cmp r14, qword [0x1402336c8]
mov r14, qword [rsp + 0x38]
jne 0x1400aeefa
mov rcx, r14
call fcn.1400a3490
mov qword [r12 + 0x18], r14
mov rax, qword [r14 + 8]
sub rax, qword [r14]
sar rax, 2
dec rax
mov qword [r12 + 0x20], rax
mov qword [r12 + 0x28], 0
je 0x1400af524
lea r13, [rsp + 0x68]
lea rax, [0x1402012b8]
mov qword [r12], rax
mov r14, qword [r13 - 8]
mov rax, r14
and rax, rsi
cmp rax, qword [0x1402336c8]
je 0x1400af071
mov qword [r12 + 0x30], r14
mov eax, dword [r13 + 8]
mov dword [r12 + 0x40], eax
mov rax, qword [r13]
mov qword [r12 + 0x38], rax
mov r14, qword [rsp + 0x78]
mov rax, r14
and rax, rsi
cmp rax, qword [0x1402336c8]
je 0x1400af54e
mov qword [r12 + 0x48], r14
mov eax, dword [rdi + 0x4c]
cmp eax, 0xffffffff
je 0x1400af31f
mov rcx, qword [r15 + 0x20]
mov qword [r15 + 0x20], r12
test rcx, rcx
jne 0x1400af571
test r15, r15
je case.default.0x1400aec65
mov eax, dword [rsp + 0x50]
lock or dword [r15 + 0x10], eax
mov rax, qword [rsp + 0x58]
mov qword [rax], r15
mov r15, rax
mov rcx, qword [rsp + 0x78]
mov rax, rcx
and rax, rsi
cmp rax, qword [0x1402336c8]
je 0x1400af4cf
mov qword [rsp + 0x78], 0
mov rcx, qword [rsp + 0x60]
mov rax, rcx
and rax, rsi
cmp rax, qword [0x1402336c8]
jne 0x1400aeff0
call fcn.1400a3600
mov rcx, qword [rsp + 0x98]
mov rax, rcx
and rax, rsi
cmp rax, qword [0x1402336c8]
je 0x1400af4d9
mov qword [rsp + 0x98], 0
mov rcx, qword [rsp + 0x80]
and rsi, rcx
cmp rsi, qword [0x1402336c8]
jne 0x1400af030
call fcn.1400a3600
test rbx, rbx
jne 0x1400af07e
mov rcx, qword [rsp + 0x108]
xor rcx, rsp
call fcn.14012d2c0
mov rax, r15
movaps xmm6, xmmword [rsp + 0x110]
add rsp, 0x128
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, r13
call fcn.1400a3490
jmp 0x1400aee46
mov rcx, r14
call fcn.1400a3490
jmp 0x1400aef48
mov rcx, qword [rbx]
test rcx, rcx
jne 0x1400af0f0
mov rcx, rbx
call fcn.14012aa6c
jmp 0x1400af035
lea r14, [rdi + 0x38]
add rdi, 0x20
mov ecx, 0x40
call fcn.14012aa30
mov r15, rax
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x28], rdi
lea rax, [rsp + 0x60]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x80]
mov rcx, r15
mov rdx, r13
mov r8, qword [rsp + 0x38]
call fcn.1400049d0
lea rax, [0x1402016e8]
mov qword [r15], rax
lea rax, [r15 + 0x30]
xorps xmm0, xmm0
movups xmmword [r15 + 0x30], xmm0
mov qword [r15 + 0x28], rax
jmp 0x1400aef99
mov rax, qword [rbx + 8]
cmp rax, rcx
je 0x1400af104
add rax, 0xfffffffffffffffc
jne 0x1400af0f4
jmp 0x1400af50e
mov qword [rbx + 8], rcx
call fcn.14012aa6c
jmp 0x1400af086
lea r14, [rdi + 0x38]
add rdi, 0x20
mov ecx, 0x40
call fcn.14012aa30
mov r15, rax
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x28], rdi
lea rax, [rsp + 0x60]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x80]
mov rcx, r15
mov rdx, r13
mov r8, qword [rsp + 0x38]
call fcn.1400049d0
lea rax, [r15 + 0x30]
xorps xmm0, xmm0
movups xmmword [r15 + 0x30], xmm0
mov qword [r15 + 0x28], rax
lea rax, [0x1402017a8]
mov qword [r15], rax
jmp 0x1400aef99
cmp eax, 0x3f
je 0x1400af188
add rcx, r12
cmp eax, 0x3c
jne 0x1400af1a5
mov byte [rcx + 2], 0
mov word [rcx], 0
lea rcx, [rsp + 0xa0]
mov r8d, 1
mov rdx, r12
call fcn.14007dc80
xor ecx, ecx
jmp 0x1400aed4a
mov r8d, 0x3f
sub r8, rax
xor edx, edx
call fcn.140164570
jmp 0x1400af188
mov rcx, r12
call fcn.1400a3490
jmp 0x1400aeb95
mov rcx, r15
call fcn.1400a3490
jmp 0x1400aec09
mov rdx, rbx
call fcn.1400afd80
mov rsi, rax
xor eax, eax
cmp rsi, rbx
cmove rbx, rax
jmp 0x1400aeb44
lea r8d, [rcx + 0x10]
xor eax, eax
cmp r8d, 0x50
jb 0x1400af26b
mov edx, ecx
and edx, 7
jne 0x1400af26b
mov edx, dword [r12 + 0x14]
cmp edx, r8d
jb 0x1400af478
mov r8, qword [r12 + 8]
mov eax, dword [r8 + rcx + 4]
cmp eax, 0xc8799269
jne 0x1400af478
add r8, rcx
mov eax, dword [r8]
cmp eax, 0x10
jb 0x1400af478
mov r9d, dword [r8]
add r9d, ecx
setb r10b
xor eax, eax
test r8, r8
je 0x1400af26b
test r10b, r10b
jne 0x1400af26b
cmp r9d, edx
ja 0x1400af26b
mov eax, dword [r8]
cmp rax, 0x11
jb 0x1400af46e
add ecx, eax
jb 0x1400af46e
cmp ecx, edx
ja 0x1400af46e
add rax, 0xfffffffffffffff0
cmp rax, r14
jb 0x1400af44d
mov rax, qword [rsp + 0x40]
mov r12, qword [rax + 8]
jmp 0x1400aeb61
shr r8, 6
lea rcx, [rsp + 0xa0]
mov rdx, r13
call fcn.14007dc80
mov r8, rbp
and r8, 0x3f
je 0x1400aed0f
and rbp, 0xffffffffffffffc0
add r13, rbp
mov ebp, r8d
jmp 0x1400aecfd
mov rax, qword [r12 + 0x48]
mov eax, dword [rax]
test eax, eax
je 0x1400aee8d
test byte [r12 + 0x40], 3
jne 0x1400af587
mov rcx, r12
add rcx, 0x30
movaps xmm0, xmmword [0x1401fd000]
lea r13, [rsp + 0xa0]
movaps xmmword [r13], xmm0
mov rdx, r13
call fcn.140004c80
mov rax, qword [r13 + 8]
cmp rax, 4
jb 0x1400aee8d
shr rax, 2
cmp rax, qword [r12 + 0x20]
jb 0x1400af58a
mov rax, qword [rsp + 0xa0]
mov qword [r12 + 0x28], rax
jmp 0x1400aee8d
mov rax, qword [r12 + 0x48]
mov eax, dword [rax]
test eax, eax
je 0x1400aef88
test byte [r12 + 0x40], 3
jne 0x1400af58d
mov rcx, r12
add rcx, 0x30
movaps xmm0, xmmword [0x1401fd000]
lea rdi, [rsp + 0xa0]
movaps xmmword [rdi], xmm0
mov rdx, rdi
call fcn.140004c80
mov rax, qword [rdi + 8]
cmp rax, 4
jb 0x1400aef88
shr rax, 2
cmp rax, qword [r12 + 0x20]
jb 0x1400af590
mov rax, qword [rsp + 0xa0]
mov qword [r12 + 0x28], rax
jmp 0x1400aef88
lea rsi, [rdi + 0x38]
lea rbx, [rdi + 0x20]
lea r14, [rdi + 0x50]
mov ecx, 0x38
call fcn.14012aa30
mov rdx, r12
mov r12, rax
mov qword [rsp + 0x20], rsi
mov rcx, rax
mov r8, r14
mov r9, rbx
call fcn.14002eba0
mov qword [r15], r12
mov eax, dword [rdi + 4]
lock or dword [r12 + 0x10], eax
jmp 0x1400af035
movzx r9d, byte [rax]
movzx r10d, r8b
xor r10d, r9d
lea r9, [0x140210ae0]
shr r8d, 8
xor r8d, dword [r9 + r10*4]
lea r9, [rax + 1]
jmp 0x1400aea8b
lea r14, [rdi + 0x38]
add rdi, 0x20
mov ecx, 0x28
call fcn.14012aa30
mov r15, rax
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x28], rdi
lea rax, [rsp + 0x60]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x80]
mov rcx, r15
mov rdx, r13
mov r8, qword [rsp + 0x38]
call fcn.1400049d0
lea rax, [0x140201868]
jmp 0x1400af16a
xor r15d, r15d
jmp 0x1400aefab
test rbx, rbx
jne 0x1400af593
xor ebx, ebx
mov qword [r15], 0
jmp 0x1400af030
mov dl, 1
call fcn.140165530
xor edx, edx
jmp 0x1400ae987
xor edx, edx
jmp 0x1400ae8f9
mov rcx, r12
mov dl, 1
call fcn.140165530
xor eax, eax
jmp 0x1400af26b
lea rcx, [0x14020310b]
lea rdx, str....._third_partylibc_srcinclude_vector:1411:_assertion___n___size___failed:_vector___index_out_of_bounds_n
call fcn.140164a90
lea rcx, [0x14020310b]
lea rdx, str....._third_partylibc_srcinclude__memoryconstruct_at.h:40:_assertion___location___nullptr_failed:_null_pointer_given_to_construct_at_n
call fcn.140164a90
mov qword [r15], 0
jmp 0x1400af035
lea rcx, [0x14020310b]
lea rdx, str....._third_partylibc_srcinclude_vector:1418:_assertion___n___size___failed:_vector___index_out_of_bounds_n
call fcn.140164a90
xor r8d, r8d
jmp 0x1400aead0
int3
call fcn.1400a3600
jmp 0x1400aefce
call fcn.1400a3600
jmp 0x1400af00b
int3
mov rcx, r13
call fcn.1400a3490
jmp 0x1400aebe0
int3
mov rcx, r13
call fcn.1400a3490
jmp 0x1400aec43
lea rcx, [0x14020310b]
lea rdx, str....._third_partylibc_srcinclude__memoryconstruct_at.h:66:_assertion___loc___nullptr_failed:_null_pointer_given_to_destroy_at_n
call fcn.140164a90
int3
int3
mov rcx, r13
call fcn.1400a3490
jmp 0x1400aedb5
mov rcx, r13
call fcn.1400a3490
jmp 0x1400aee77
mov rcx, r13
call fcn.1400a3490
jmp 0x1400aeed4
mov rcx, r14
call fcn.1400a3490
jmp 0x1400aef77
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [0x1402233e0]
jmp 0x1400aeea4
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [0x1402233e0]
jmp 0x1400aef99
int3
int3
int3
int3
mov rcx, rbx
call fcn.14011f250
mov rcx, rbx
call fcn.14012aa6c
jmp 0x1400af44b