Function at 0x1400bcff0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x148
mov r11d, edx
mov eax, r8d
mov edx, dword [rcx + 4]
mov r12, rcx
add rax, qword [rcx + 0xa0]
bswap rax
mov qword [rsp + 0x74], rax
mov eax, edx
or eax, r8d
je 0x1400bd050
cmp edx, 3
jbe 0x1400bdb28
test r8d, r8d
jne 0x1400bdb28
mov r8d, 0x10
sub r8, rdx
lea rdx, [rsp + rdx + 0x70]
jmp 0x1400bd05b
lea rdx, [rsp + 0x74]
mov r8d, 0xc
mov rcx, r12
mov ebx, 0x1e
mov qword [rsp + 0x1a8], r9
lea rdi, [r12 + 0xc]
call sym.fugue2_core
mov eax, dword [r12 + 8]
mov qword [rsp + 0x68], rdi
lea rbp, [0x1402c8f20]
lea r15, [0x1402c9720]
lea eax, [rax + rax*2]
add eax, eax
mov eax, eax
lea rsi, [rax*4]
sub rbx, rax
lea rax, [rsp + 0xc0]
mov r8, rsi
lea rdx, [rdi + rbx*4]
mov rcx, rax
mov r14, rax
mov qword [rsp + 0x30], rax
call sym.memcpy
mov r8d, ebx
lea rcx, [r14 + rsi]
mov rdx, rdi
shl r8, 2
lea r14, [0x1402c9320]
lea rsi, [0x1402c8b20]
call sym.memcpy
lea rax, [rsp + 0xcc]
mov dword [rsp + 0x40], 0xa
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x190], r12
nop dword [rax]
mov rdx, qword [rsp + 0x30]
mov rax, qword [rsp + 0x12c]
mov r8d, 0x6c
mov rcx, qword [rsp + 0x38]
mov qword [rsp + 0x80], rax
mov eax, dword [rsp + 0x134]
mov dword [rsp + 0x88], eax
call sym.memmove
mov r8, qword [rsp + 0x80]
mov ecx, dword [rsp + 0xfc]
mov r10d, dword [rsp + 0x88]
vmovq xmm0, qword [rsp + 0xfc]
vmovq xmm1, qword [rsp + 0xd0]
mov rax, r8
mov dword [rsp + 0x44], ecx
shr rax, 0x20
mov rbx, rax
mov eax, dword [rsp + 0xd0]
xor ebx, dword [rsp + 0xd4]
vpxor xmm0, xmm0, xmm1
vmovq qword [rsp + 0xfc], xmm0
movzx edi, bh
xor r8d, eax
mov dword [rsp + 0x48], eax
mov eax, dword [rsp + 0xd8]
mov r9d, edi
mov ecx, r8d
xor dword [rsp + 0x104], eax
mov edi, dword [rbp + r9*4]
movzx r9d, bl
movzx edx, ch
xor r10d, eax
mov eax, r8d
mov r11d, dword [rsi + r9*4]
mov edx, edx
shr eax, 0x10
mov ecx, dword [rbp + rdx*4]
movzx edx, r8b
shr r8d, 0x18
movzx eax, al
mov r12d, dword [r15 + r8*4]
mov r8d, ebx
mov edx, dword [rsi + rdx*4]
shr ebx, 0x10
shr r8d, 0x18
movzx r9d, bl
mov eax, dword [r14 + rax*4]
mov r8d, dword [r15 + r8*4]
xor r12d, edx
xor edx, r11d
xor r12d, eax
mov ebx, r8d
xor r12d, ecx
xor ecx, edi
xor ebx, r11d
mov r11d, r10d
xor ebx, dword [r14 + r9*4]
mov r9d, r10d
shr r11d, 0x10
xor ebx, edi
shr r9d, 0x18
mov dword [rsp + 0x20], ecx
movzx r11d, r11b
mov r9d, dword [r15 + r9*4]
mov ecx, r10d
mov edi, dword [r14 + r11*4]
movzx r11d, r10b
movzx ecx, ch
mov r11d, dword [rsi + r11*4]
xor r8d, r9d
mov r10d, ecx
xor eax, edi
xor edx, r11d
xor r9d, r11d
mov r11d, dword [rsp + 0xcc]
xor r9d, edi
xor r9d, dword [rbp + r10*4]
mov edi, r11d
mov ecx, r11d
mov r10d, r11d
movzx r11d, r11b
shr edi, 0x10
shr r10d, 0x18
movzx edi, dil
mov r10d, dword [r15 + r10*4]
mov r13d, dword [r14 + rdi*4]
movzx edi, ch
mov ecx, dword [rsp + 0x20]
mov edi, edi
xor r8d, r10d
xor r10d, dword [rsi + r11*4]
mov r11d, ebx
mov edi, dword [rbp + rdi*4]
xor eax, r13d
xor ecx, edi
xor r10d, r13d
xor r11d, eax
mov r13d, edx
xor r10d, edi
mov edi, r12d
and r11d, 0xff0000
shr r13d, 0x18
xor edi, r8d
xor r13d, r12d
and edi, 0xff000000
movzx r13d, r13b
or edi, r11d
mov r11d, edx
xor r11d, r10d
movzx r11d, r11b
or edi, r11d
mov r11d, r9d
xor r11d, ecx
and r11d, 0xff00
or edi, r11d
mov r11d, r8d
shl r11d, 8
mov dword [rsp + 0xc0], edi
xor r11d, ebx
and r11d, 0xff000000
or r11d, r13d
mov r13d, eax
shl r13d, 8
xor r13d, r9d
and r13d, 0xff0000
or r11d, r13d
mov r13d, ecx
shl r13d, 8
xor r13d, r10d
and r13d, 0xff00
or r11d, r13d
mov r13d, edx
mov dword [rsp + 0xc4], r11d
mov r11d, r8d
shr r13d, 0x10
shl r11d, 0x10
xor r13d, ebx
xor r11d, r9d
movzx r13d, r13b
and r11d, 0xff000000
or r11d, r13d
mov r13d, eax
shl r13d, 0x10
shl r8d, 0x18
shr edx, 8
xor r13d, r10d
xor r8d, r10d
shr eax, 8
and r13d, 0xff0000
xor edx, r9d
and r8d, 0xff000000
xor eax, r12d
or r11d, r13d
mov r13d, ecx
movzx edx, dl
shr ecx, 8
shr r13d, 0x10
or edx, r8d
and eax, 0xff0000
xor ecx, ebx
xor r13d, r12d
or eax, edx
and ecx, 0xff00
and r13d, 0xff00
or eax, ecx
or r11d, r13d
sub dword [rsp + 0x40], 1
mov dword [rsp + 0xc8], r11d
mov dword [rsp + 0xcc], eax
jne 0x1400bd100
mov ebx, dword [rsp + 0x48]
mov eax, dword [rsp + 0x44]
mov dword [rsp + 0x54], 0xd
mov dword [rsp + 0x20], edi
xor eax, ebx
mov dword [rsp + 0x40], eax
lea rax, [rsp + 0xfc]
mov qword [rsp + 0x60], rax
lea rax, [rsp + 0xf8]
mov qword [rsp + 0x58], rax
jmp 0x1400bd3f7
mov ebx, dword [rsp + 0xd0]
mov eax, dword [rsp + 0x20]
mov rdi, qword [rsp + 0x30]
mov ecx, dword [rsp + 0x40]
mov r13, qword [rsp + 0x60]
xor ebx, eax
mov eax, dword [rsp + 0x20]
mov rdx, qword [rsp + 0x10c]
mov dword [rsp + 0xd0], ebx
vmovdqu xmm3, xmmword [rdi]
xor ecx, eax
mov r8, qword [rsp + 0x128]
mov dword [rsp + 0x48], edx
mov r9, qword [rsp + 0x130]
mov eax, ecx
mov dword [rsp + 0xfc], ecx
mov r11, qword [rsp + 0x104]
mov r10, qword [rsp + 0xfc]
mov dword [rsp + 0x38], ebx
mov rcx, qword [rsp + 0x114]
mov qword [rsp + 0xb4], r9
vmovdqu xmm2, xmmword [rsp + 0x11c]
vmovdqu xmmword [r13], xmm3
vmovdqu xmm5, xmmword [rdi + 0x10]
vmovdqu xmmword [rsp + 0xa0], xmm2
vmovdqu xmmword [r13 + 0x10], xmm5
vmovdqu xmm2, xmmword [rdi + 0x20]
mov qword [rsp + 0xac], r8
vmovdqu xmmword [r13 + 0x20], xmm2
vmovdqu xmm4, xmmword [rdi + 0x2c]
mov qword [rsp + 0xd0], rdx
mov edx, eax
shr edx, 0x10
vmovdqu xmmword [r13 + 0x2c], xmm4
movzx edx, dl
vmovdqu xmmword [rsp + 0x20], xmm4
mov qword [rsp + 0xc0], r10
mov qword [rsp + 0xc8], r11
mov qword [rsp + 0xd8], rcx
vmovdqu xmm0, xmmword [rsp + 0xa0]
mov edi, dword [r14 + rdx*4]
movzx edx, ah
mov qword [rsp + 0xf4], r9
mov edx, edx
mov r10d, dword [rsp + 0xc8]
vmovdqu xmmword [rsp + 0xe0], xmm0
mov ecx, dword [rbp + rdx*4]
movzx edx, al
shr eax, 0x18
mov qword [rsp + 0xec], r8
mov ebx, dword [rsi + rdx*4]
mov r9d, dword [r15 + rax*4]
mov r12d, r10d
mov r13d, ecx
mov dword [rsp + 0x20], ecx
shr r12d, 0x10
xor r9d, ebx
mov eax, r9d
mov r9d, r10d
xor eax, edi
shr r9d, 0x18
xor r13d, eax
mov eax, dword [rsp + 0xc4]
mov edx, eax
shr edx, 0x18
mov r8d, dword [r15 + rdx*4]
movzx edx, ah
mov edx, edx
mov ecx, dword [rbp + rdx*4]
movzx edx, al
shr eax, 0x10
mov r11d, r8d
mov edx, dword [rsi + rdx*4]
movzx eax, al
mov dword [rsp + 0x40], ecx
xor r11d, edx
xor r11d, dword [r14 + rax*4]
mov eax, r9d
mov r9d, dword [r15 + rax*4]
movzx eax, r12b
movzx r12d, r10b
xor r11d, ecx
mov r12d, dword [rsi + r12*4]
mov ecx, r10d
mov eax, dword [r14 + rax*4]
xor r8d, r9d
movzx ecx, ch
xor edx, r12d
xor r9d, r12d
mov r10d, ecx
mov ecx, dword [rsp + 0x40]
xor edx, ebx
mov ebx, dword [rsp + 0xcc]
xor r9d, eax
xor r9d, dword [rbp + r10*4]
mov r12d, ebx
mov r10d, ebx
shr r12d, 0x10
shr r10d, 0x18
movzx r12d, r12b
mov r10d, dword [r15 + r10*4]
mov r12d, dword [r14 + r12*4]
xor r8d, r10d
mov dword [rsp + 0x44], r10d
mov r10d, dword [rsp + 0x20]
xor eax, r12d
xor eax, edi
movzx edi, bh
movzx ebx, bl
mov edi, edi
mov edi, dword [rbp + rdi*4]
xor ecx, edi
xor ecx, r10d
mov r10d, dword [rsp + 0x44]
xor r10d, dword [rsi + rbx*4]
mov ebx, r11d
xor r10d, r12d
xor ebx, eax
mov r12d, r9d
xor r10d, edi
and ebx, 0xff0000
xor r12d, ecx
mov edi, r12d
mov r12d, edx
xor r12d, r10d
and edi, 0xff00
or ebx, edi
movzx edi, r12b
mov r12d, r13d
xor r12d, r8d
or ebx, edi
mov edi, r12d
mov r12d, eax
and edi, 0xff000000
shl r12d, 8
or ebx, edi
mov edi, r12d
mov r12d, ecx
shl r12d, 8
xor edi, r9d
mov dword [rsp + 0xc0], ebx
xor r12d, r10d
and edi, 0xff0000
and r12d, 0xff00
or edi, r12d
mov r12d, r8d
shl r12d, 8
xor r12d, r11d
and r12d, 0xff000000
or edi, r12d
mov r12d, edx
shr r12d, 0x18
xor r12d, r13d
movzx r12d, r12b
or edi, r12d
mov r12d, r8d
shl r12d, 0x10
mov dword [rsp + 0x40], edi
mov dword [rsp + 0xc4], edi
mov edi, r12d
mov r12d, edx
shr r12d, 0x10
xor edi, r9d
xor r12d, r11d
and edi, 0xff000000
movzx r12d, r12b
or edi, r12d
mov r12d, eax
shl r12d, 0x10
xor r12d, r10d
and r12d, 0xff0000
or edi, r12d
mov r12d, ecx
shr r12d, 0x10
shl r8d, 0x18
shr edx, 8
xor r8d, r10d
shr eax, 8
xor r12d, r13d
xor edx, r9d
and r8d, 0xff000000
xor eax, r13d
shr ecx, 8
movzx edx, dl
and eax, 0xff0000
xor ecx, r11d
and r12d, 0xff00
or edx, r8d
or edi, r12d
and ecx, 0xff00
mov r8d, 0x40
or eax, edx
mov dword [rsp + 0x4c], edi
mov r13d, dword [rsp + 0x100]
mov r9d, eax
mov rdx, qword [rsp + 0x30]
vmovdqu xmm2, xmmword [rsp + 0x110]
mov dword [rsp + 0xc8], edi
or r9d, ecx
mov ecx, dword [rsp + 0x48]
xor r13d, ebx
vmovdqu xmm3, xmmword [rsp + 0x120]
mov dword [rsp + 0x100], r13d
mov rax, qword [rsp + 0x130]
vmovdqu xmm1, xmmword [rsp + 0x100]
xor ecx, ebx
mov dword [rsp + 0x50], r9d
mov dword [rsp + 0x48], ecx
mov dword [rsp + 0xd0], ecx
mov rcx, qword [rsp + 0x58]
mov dword [rsp + 0xcc], r9d
mov qword [rsp + 0xb0], rax
vmovdqu xmmword [rsp + 0x80], xmm1
vmovdqu xmmword [rsp + 0x90], xmm2
vmovdqu xmmword [rsp + 0xa0], xmm3
call sym.memmove
mov rax, qword [rsp + 0xb0]
mov ecx, r13d
vmovdqu xmm4, xmmword [rsp + 0x80]
vmovdqu xmm5, xmmword [rsp + 0x90]
shr ecx, 0x10
vmovdqu xmm0, xmmword [rsp + 0xa0]
mov qword [rsp + 0xf0], rax
movzx eax, cl
mov ecx, r13d
vmovdqu xmmword [rsp + 0xc0], xmm4
mov r12d, dword [r14 + rax*4]
movzx eax, ch
mov edx, dword [rsp + 0xc4]
mov eax, eax
mov r11d, dword [rsp + 0xc8]
vmovdqu xmmword [rsp + 0xd0], xmm5
vmovdqu xmmword [rsp + 0xe0], xmm0
mov edi, dword [rbp + rax*4]
mov r10d, edx
movzx eax, r13b
shr r13d, 0x18
mov ebx, dword [rsi + rax*4]
shr r10d, 0x18
mov ecx, dword [r15 + r13*4]
movzx r13d, r11b
mov r13d, dword [rsi + r13*4]
xor ecx, ebx
mov eax, ecx
xor eax, r12d
mov ecx, eax
mov eax, r10d
mov r9d, dword [r15 + rax*4]
movzx eax, dh
xor ecx, edi
mov eax, eax
mov dword [rsp + 0x20], ecx
mov r8d, dword [rbp + rax*4]
movzx eax, dl
shr edx, 0x10
mov r10d, r9d
mov ecx, dword [rsi + rax*4]
movzx edx, dl
mov eax, dword [r14 + rdx*4]
mov edx, r11d
xor r10d, ecx
shr edx, 0x18
xor eax, r10d
mov r10d, dword [r15 + rdx*4]
mov edx, r11d
xor eax, r8d
mov dword [rsp + 0x44], eax
mov eax, r11d
xor r9d, r10d
xor ecx, r13d
movzx eax, ah
xor ecx, ebx
shr edx, 0x10
xor r10d, r13d
mov r11d, eax
mov eax, dword [rsp + 0x38]
movzx edx, dl
mov edx, dword [r14 + rdx*4]
mov ebx, eax
mov r13d, eax
shr ebx, 0x10
xor r10d, edx
xor r10d, dword [rbp + r11*4]
mov r11d, eax
movzx ebx, bl
movzx eax, ah
shr r11d, 0x18
mov ebx, dword [r14 + rbx*4]
mov r11d, dword [r15 + r11*4]
xor edx, ebx
xor r9d, r11d
xor edx, r12d
mov r12d, eax
mov eax, dword [rsp + 0x20]
mov r12d, dword [rbp + r12*4]
xor r8d, r12d
xor r8d, edi
movzx edi, r13b
mov r13d, dword [rsp + 0x44]
xor r11d, dword [rsi + rdi*4]
xor r11d, ebx
mov edi, r13d
mov ebx, r10d
xor edi, edx
xor ebx, r8d
xor r11d, r12d
mov r12d, r8d
and ebx, 0xff00
and edi, 0xff0000
shl r12d, 8
or edi, ebx
mov ebx, ecx
xor r12d, r11d
xor ebx, r11d
movzx ebx, bl
or edi, ebx
mov ebx, eax
xor ebx, r9d
and ebx, 0xff000000
or edi, ebx
mov ebx, edx
shl ebx, 8
mov dword [rsp + 0x20], edi
xor ebx, r10d
mov dword [rsp + 0xc0], edi
mov edi, r13d
and ebx, 0xff0000
and r12d, 0xff00
or ebx, r12d
mov r12d, r9d
shl r12d, 8
xor r12d, r13d
mov r13d, ecx
and r12d, 0xff000000
shr r13d, 0x10
or ebx, r12d
mov r12d, ecx
xor r13d, edi
shr ecx, 8
shr r12d, 0x18
movzx r13d, r13b
xor ecx, r10d
xor r12d, eax
movzx ecx, cl
movzx r12d, r12b
or ebx, r12d
mov r12d, r9d
shl r9d, 0x18
shl r12d, 0x10
xor r9d, r11d
mov dword [rsp + 0xc4], ebx
xor r12d, r10d
and r9d, 0xff000000
and r12d, 0xff000000
or ecx, r9d
or r12d, r13d
mov r13d, edx
shr edx, 8
shl r13d, 0x10
xor edx, eax
xor r13d, r11d
and edx, 0xff0000
and r13d, 0xff0000
or r12d, r13d
mov r13d, r8d
shr r13d, 0x10
xor r13d, eax
and r13d, 0xff00
or r13d, r12d
or edx, ecx
shr r8d, 8
xor r8d, edi
mov dword [rsp + 0xc8], r13d
and r8d, 0xff00
or edx, r8d
sub dword [rsp + 0x54], 1
mov dword [rsp + 0xcc], edx
jne 0x1400bd3f0
mov edi, dword [rsp + 0x20]
mov ecx, dword [rsp + 0xd0]
mov eax, edx
mov edx, dword [rsp + 0x40]
mov r12, qword [rsp + 0x190]
mov r9, qword [rsp + 0x1a8]
xor ecx, edi
xor edx, edi
bswap ebx
mov dword [r9], ebx
bswap r13d
mov dword [r9 + 4], r13d
bswap eax
mov dword [r9 + 8], eax
bswap ecx
mov dword [r9 + 0xc], ecx
mov eax, edx
bswap eax
mov dword [r9 + 0x10], eax
mov eax, dword [rsp + 0x4c]
bswap eax
mov dword [r9 + 0x14], eax
mov eax, dword [rsp + 0x50]
bswap eax
cmp qword [rsp + 0x1b0], 8
mov dword [r9 + 0x18], eax
je 0x1400bdb78
mov qword [r12 + 0xc], 0
lea rdi, [r12 + 0x14]
xor eax, eax
movabs rdx, 0xe074e3cbee39e01c
mov qword [r12 + 0x60], 0
mov rcx, qword [rsp + 0x68]
and rdi, 0xfffffffffffffff8
sub rcx, rdi
add ecx, 0x5c
shr ecx, 3
rep stosq qword [rdi], rax
mov qword [r12 + 0x70], rdx
movabs rax, 0x6286f757f4c9120d
movabs rdx, 0xbd8d679a9a43d215
mov qword [r12 + 0x68], rax
movabs rax, 0xa1127c62e074e3cb
mov qword [r12 + 0x74], rax
mov qword [r12 + 0x7c], rdx
mov qword [r12], 0
mov dword [r12 + 8], 0
mov qword [r12 + 0xa0], 0
add rsp, 0x148
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov eax, 0xff
mov ecx, r8d
shr eax, cl
not eax
and eax, r11d
cmp edx, 4
je 0x1400bdbf3
mov ecx, edx
mov byte [rsp + rcx + 0x70], al
lea eax, [rdx + 1]
cmp eax, 3
ja 0x1400bdb5f
mov byte [rsp + rax + 0x70], 0
lea eax, [rdx + 2]
cmp edx, 2
jne 0x1400bdc13
mov r8d, 0x10
lea rdx, [rsp + rcx + 0x70]
sub r8, rcx
jmp 0x1400bd05b
mov r15d, dword [rsp + 0x48]
bswap r15d
mov dword [r9 + 0x1c], r15d
lea rdi, [r12 + 0x14]
xor eax, eax
movabs rdx, 0xd2b0b594e0d4f668
mov qword [r12 + 0xc], 0
and rdi, 0xfffffffffffffff8
mov qword [r12 + 0x5c], 0
mov rcx, qword [rsp + 0x68]
sub rcx, rdi
add ecx, 0x58
shr ecx, 3
rep stosq qword [rdi], rax
mov qword [r12 + 0x6c], rdx
movabs rax, 0x6671135fe952bdde
movabs rdx, 0x34f8c2489149e899
mov qword [r12 + 0x64], rax
movabs rax, 0xfbf929def96c621d
mov qword [r12 + 0x74], rax
mov qword [r12 + 0x7c], rdx
jmp 0x1400bdaf2
mov byte [rsp + 0x70], al
xor eax, eax
lea rdx, [rsp + 0x70]
mov r8d, 0x10
mov byte [rsp + 0x71], 0
mov word [rsp + 0x72], ax
jmp 0x1400bd05b
mov byte [rsp + rax + 0x70], 0
lea eax, [rdx + 3]
cmp edx, 1
je 0x1400bdb5f
mov byte [rsp + rax + 0x70], 0
cmp edx, 0xffffffff
jne 0x1400bdb5f
mov byte [rsp + 0x73], 0
jmp 0x1400bdb5f