Function at 0x1400dc330
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x168
vmovups xmmword [rsp + 0x100], xmm6
vmovups xmmword [rsp + 0x110], xmm7
vmovups xmmword [rsp + 0x120], xmm8
vmovups xmmword [rsp + 0x130], xmm9
vmovups xmmword [rsp + 0x140], xmm10
vmovups xmmword [rsp + 0x150], xmm11
mov r15, rcx
mov eax, r8d
mov ecx, dword [rcx + 4]
mov r14, r9
add rax, qword [r15 + 0xa0]
bswap rax
mov qword [rsp + 0x34], rax
mov eax, ecx
or eax, r8d
je 0x1400dc3c0
cmp ecx, 3
jbe 0x1400dcea0
test r8d, r8d
jne 0x1400dcea0
mov r8d, 0x10
lea rdx, [rsp + rcx + 0x30]
sub r8, rcx
jmp 0x1400dc3cb
lea rdx, [rsp + 0x34]
mov r8d, 0xc
mov rcx, r15
mov ebx, 0x1e
lea r13, [r15 + 0xc]
lea rdi, [0x14033a5c0]
call sym.fugue2_core
mov eax, dword [r15 + 8]
lea rbp, [0x14033a1c0]
lea r12, [0x140339dc0]
lea eax, [rax + rax*2]
add eax, eax
mov eax, eax
lea r8, [rax*4]
sub rbx, rax
lea rax, [rsp + 0x80]
lea rdx, [r15 + rbx*4 + 0xc]
mov rcx, rax
vmovq xmm8, rax
mov qword [rsp + 0x28], r8
call sym.memcpy
mov rdx, r13
mov r8, qword [rsp + 0x28]
lea rcx, [rax + r8]
mov r8d, ebx
shl r8, 2
call sym.memcpy
mov eax, 0xa
mov qword [rsp + 0x1b0], r15
mov qword [rsp + 0x1c8], r14
vmovd xmm7, eax
lea rax, [rsp + 0x8c]
vmovq xmm11, r13
vmovq xmm6, rax
lea rax, [0x14033a9c0]
vmovq xmm9, rax
nop word cs:[rax + rax]
mov rax, qword [rsp + 0xec]
mov r8d, 0x6c
vmovq rdx, xmm8
vmovq rcx, xmm6
mov qword [rsp + 0x40], rax
mov eax, dword [rsp + 0xf4]
mov dword [rsp + 0x48], eax
call sym.memmove
vmovd xmm0, dword [rsp + 0x90]
mov rdx, qword [rsp + 0x40]
vmovq rbx, xmm9
vmovq r14, xmm9
mov r11d, dword [rsp + 0x48]
vmovq xmm1, qword [rsp + 0xbc]
vmovq xmm2, qword [rsp + 0x90]
vmovd xmm3, dword [rsp + 0xbc]
mov rax, rdx
shr rax, 0x20
mov r10, rax
xor r10d, dword [rsp + 0x94]
vmovd eax, xmm0
xor edx, eax
mov eax, dword [rsp + 0x98]
xor dword [rsp + 0xc4], eax
movzx ecx, dh
mov ecx, ecx
vpxor xmm1, xmm1, xmm2
mov r8d, dword [rbp + rcx*4]
movzx ecx, dl
movzx r13d, r10b
vmovq qword [rsp + 0xbc], xmm1
xor r11d, eax
mov ecx, dword [r12 + rcx*4]
mov eax, edx
shr edx, 0x18
shr eax, 0x10
mov r13d, dword [r12 + r13*4]
movzx eax, al
mov eax, dword [rdi + rax*4]
mov r9d, ecx
xor r9d, dword [rbx + rdx*4]
xor ecx, r13d
mov edx, eax
xor edx, r8d
xor r9d, edx
mov edx, r10d
shr edx, 0x18
mov edx, dword [rbx + rdx*4]
mov ebx, r10d
shr r10d, 0x10
movzx ebx, bh
movzx r10d, r10b
mov ebx, ebx
mov ebx, dword [rbp + rbx*4]
xor r8d, ebx
xor ebx, dword [rdi + r10*4]
mov r10d, edx
xor r10d, r13d
xor ebx, r10d
mov r10d, r11d
shr r10d, 0x18
mov dword [rsp + 0x28], ebx
mov ebx, r11d
mov r13d, dword [r14 + r10*4]
mov r10d, r11d
movzx esi, bh
movzx r14d, r11b
shr r10d, 0x10
mov r11d, esi
mov r14d, dword [r12 + r14*4]
movzx r10d, r10b
mov r10d, dword [rdi + r10*4]
xor edx, r13d
xor r13d, r14d
xor ecx, r14d
vmovq r14, xmm9
xor eax, r10d
xor r10d, dword [rbp + r11*4]
xor r10d, r13d
mov r13d, dword [rsp + 0x8c]
mov r11d, r13d
mov ebx, r13d
shr r11d, 0x18
movzx esi, bh
mov r11d, dword [r14 + r11*4]
mov r14d, r13d
mov r15d, esi
movzx r13d, r13b
shr r14d, 0x10
mov r15d, dword [rbp + r15*4]
mov esi, dword [rsp + 0x28]
movzx r14d, r14b
mov r14d, dword [rdi + r14*4]
xor edx, r11d
xor r11d, dword [r12 + r13*4]
mov r13d, ecx
xor r8d, r15d
mov ebx, esi
xor eax, r14d
xor r14d, r15d
xor ebx, eax
xor r11d, r14d
mov r14d, r10d
xor r14d, r8d
xor r13d, r11d
and r14d, 0xff00
movzx r13d, r13b
or r14d, r13d
mov r13d, ebx
vmovd xmm1, r14d
mov r14d, r9d
and r13d, 0xff0000
xor r14d, edx
vmovd ebx, xmm1
and r14d, 0xff000000
or r14d, r13d
mov r13d, eax
or ebx, r14d
mov r14d, r8d
shl r13d, 8
shl r14d, 8
xor r13d, r10d
mov dword [rsp + 0x80], ebx
vmovd xmm1, ebx
xor r14d, r11d
and r13d, 0xff0000
and r14d, 0xff00
or r14d, r13d
mov r13d, edx
shl r13d, 8
xor r13d, esi
and r13d, 0xff000000
vmovd xmm2, r13d
mov r13d, ecx
shr r13d, 0x18
vmovd ebx, xmm2
xor r13d, r9d
movzx r13d, r13b
or r13d, ebx
mov ebx, r8d
or r13d, r14d
mov dword [rsp + 0x84], r13d
mov r13d, edx
shl r13d, 0x10
xor r13d, r10d
mov r14d, r13d
mov r13d, ecx
shr r13d, 0x10
and r14d, 0xff000000
xor r13d, esi
movzx r13d, r13b
or r13d, r14d
mov r14d, eax
shl r14d, 0x10
shr ebx, 0x10
shr eax, 8
shr r8d, 8
shl edx, 0x18
shr ecx, 8
xor r14d, r11d
xor ebx, r9d
xor eax, r9d
xor r8d, esi
xor edx, r11d
xor ecx, r10d
and r14d, 0xff0000
and ebx, 0xff00
and eax, 0xff0000
and r8d, 0xff00
and edx, 0xff000000
movzx ecx, cl
or r14d, ebx
or eax, r8d
or edx, ecx
or r13d, r14d
or eax, edx
mov dword [rsp + 0x88], r13d
mov dword [rsp + 0x8c], eax
vmovd eax, xmm7
dec eax
vmovd xmm7, eax
jne 0x1400dc480
mov ecx, 0xd
vmovd r9d, xmm1
vmovd ebx, xmm0
vmovd eax, xmm3
vmovd xmm1, ecx
lea rcx, [rsp + 0xbc]
xor eax, ebx
mov r15d, r9d
vmovq xmm2, rcx
vmovdqu64 xmm16, xmm11
jmp 0x1400dc7a0
mov ebx, dword [rsp + 0x90]
vmovq rax, xmm11
shr rax, 0x20
xor ebx, r15d
xor eax, r15d
vmovq rcx, xmm8
vmovdqu ymm0, ymmword [rsp + 0xd8]
mov dword [rsp + 0xbc], eax
mov dword [rsp + 0x90], ebx
vmovdqu ymm7, ymmword [rsp + 0xbc]
vmovdqu ymm6, ymmword [rcx]
vmovq rsi, xmm2
mov edx, eax
shr edx, 0x10
movzx edx, dl
vmovdqu ymmword [rsi], ymm6
vmovdqu ymmword [rsp + 0x40], ymm7
vmovdqu ymmword [rsp + 0x5c], ymm0
vmovdqu ymm6, ymmword [rsp + 0x40]
vmovdqu ymm7, ymmword [rcx + 0x1c]
vmovq rcx, xmm9
vmovdqu ymmword [rsp + 0x80], ymm6
vmovdqu ymmword [rsp + 0x9c], ymm0
vmovd xmm0, dword [rdi + rdx*4]
movzx edx, ah
mov edx, edx
vmovd xmm3, dword [rbp + rdx*4]
movzx edx, al
shr eax, 0x18
vmovdqu ymmword [rsi + 0x1c], ymm7
mov r15d, dword [r12 + rdx*4]
mov r14d, r15d
xor r14d, dword [rcx + rax*4]
vmovd eax, xmm0
vmovd esi, xmm3
xor eax, esi
vmovq rsi, xmm9
xor r14d, eax
mov eax, dword [rsp + 0x84]
mov edx, eax
shr edx, 0x18
mov ecx, dword [rcx + rdx*4]
movzx edx, ah
mov edx, edx
mov r8d, dword [rbp + rdx*4]
movzx edx, al
shr eax, 0x10
movzx eax, al
mov r9d, dword [r12 + rdx*4]
mov edx, dword [rsp + 0x88]
mov r13d, dword [rdi + rax*4]
mov eax, ecx
xor eax, r9d
movzx r10d, dl
xor r13d, r8d
xor r13d, eax
mov eax, edx
shr eax, 0x18
mov r11d, dword [rsi + rax*4]
mov eax, edx
movzx edx, dh
mov edx, edx
shr eax, 0x10
movzx eax, al
mov eax, dword [rdi + rax*4]
xor ecx, r11d
vmovd xmm4, ecx
mov ecx, dword [r12 + r10*4]
mov r10d, dword [rbp + rdx*4]
mov edx, dword [rsp + 0x8c]
xor r9d, ecx
xor r11d, ecx
xor r10d, eax
vmovd ecx, xmm4
xor r9d, r15d
mov r15d, edx
xor r10d, r11d
mov r11d, edx
shr r15d, 0x10
shr r11d, 0x18
movzx r15d, r15b
mov r11d, dword [rsi + r11*4]
vmovd esi, xmm0
mov r15d, dword [rdi + r15*4]
xor ecx, r11d
xor eax, r15d
xor eax, esi
movzx esi, dh
movzx edx, dl
vmovd xmm0, esi
xor r11d, dword [r12 + rdx*4]
mov edx, r9d
vmovq rsi, xmm0
vmovd xmm0, dword [rbp + rsi*4]
vmovd esi, xmm0
xor r8d, esi
vmovd esi, xmm3
xor r8d, esi
vmovd esi, xmm0
xor r15d, esi
mov esi, r10d
xor r11d, r15d
mov r15d, r14d
xor r15d, ecx
and r15d, 0xff000000
xor edx, r11d
xor esi, r8d
movzx edx, dl
and esi, 0xff00
or edx, r15d
mov r15d, r13d
xor r15d, eax
and r15d, 0xff0000
or r15d, esi
mov esi, r8d
or edx, r15d
mov r15d, eax
shl esi, 8
shl r15d, 8
xor esi, r11d
mov dword [rsp + 0x80], edx
vmovdqu ymm5, ymmword [rsp + 0xd8]
xor r15d, r10d
and esi, 0xff00
and r15d, 0xff0000
or esi, r15d
mov r15d, ecx
shl r15d, 8
vmovd xmm0, esi
xor r15d, r13d
and r15d, 0xff000000
vmovd xmm3, r15d
mov r15d, r9d
shr r15d, 0x18
vmovd esi, xmm3
xor r15d, r14d
movzx r15d, r15b
or r15d, esi
vmovd esi, xmm0
or r15d, esi
mov esi, r8d
mov dword [rsp + 0x84], r15d
mov r15d, eax
shr esi, 0x10
vmovq xmm11, qword [rsp + 0x80]
shl r15d, 0x10
xor esi, r14d
xor r15d, r11d
and esi, 0xff00
and r15d, 0xff0000
or esi, r15d
mov r15d, ecx
shl r15d, 0x10
vmovd xmm0, esi
xor r15d, r10d
and r15d, 0xff000000
vmovd xmm3, r15d
mov r15d, r9d
shr r15d, 0x10
shr eax, 8
shr r8d, 8
shl ecx, 0x18
shr r9d, 8
xor eax, r14d
xor r8d, r13d
xor ecx, r11d
xor r9d, r10d
and r8d, 0xff00
and eax, 0xff0000
and ecx, 0xff000000
movzx r9d, r9b
or eax, r8d
xor dword [rsp + 0x90], edx
xor edx, dword [rsp + 0xc0]
or ecx, r9d
xor r15d, r13d
vmovd esi, xmm3
vmovq xmm3, qword [rsp + 0x90]
or eax, ecx
movzx r15d, r15b
mov rcx, qword [rsp + 0xb8]
vmovq qword [rsp + 0xb8], xmm11
mov dword [rsp + 0x8c], eax
mov rax, qword [rsp + 0x98]
or r15d, esi
vmovd esi, xmm0
or r15d, esi
vmovq rsi, xmm9
mov dword [rsp + 0xc0], edx
vmovdqu ymm7, ymmword [rsp + 0xc0]
mov dword [rsp + 0x88], r15d
vmovq xmm4, qword [rsp + 0x88]
mov qword [rsp + 0xf0], rcx
vmovq rcx, xmm9
mov qword [rsp + 0xd0], rax
mov rax, qword [rsp + 0xa0]
vmovq qword [rsp + 0xc8], xmm3
mov qword [rsp + 0xd8], rax
mov rax, qword [rsp + 0xa8]
vmovdqu ymmword [rsp + 0x40], ymm7
vmovdqu ymmword [rsp + 0x58], ymm5
vmovdqu ymm6, ymmword [rsp + 0x40]
vmovq qword [rsp + 0xc0], xmm4
mov qword [rsp + 0xe0], rax
mov rax, qword [rsp + 0xb0]
mov qword [rsp + 0xe8], rax
mov eax, edx
shr eax, 0x10
movzx eax, al
vmovdqu ymmword [rsp + 0x80], ymm6
vmovdqu ymmword [rsp + 0x98], ymm5
mov r15d, dword [rdi + rax*4]
movzx eax, dh
mov eax, eax
vmovd xmm5, dword [rbp + rax*4]
movzx eax, dl
shr edx, 0x18
vmovd xmm10, dword [r12 + rax*4]
vmovq rax, xmm9
vmovd r9d, xmm10
xor r9d, dword [rax + rdx*4]
vmovd eax, xmm5
xor eax, r15d
xor r9d, eax
mov eax, dword [rsp + 0x84]
mov edx, eax
shr edx, 0x18
mov ecx, dword [rcx + rdx*4]
movzx edx, ah
mov edx, edx
mov r10d, dword [rbp + rdx*4]
movzx edx, al
shr eax, 0x10
movzx eax, al
mov r8d, dword [r12 + rdx*4]
mov r14d, dword [rdi + rax*4]
mov eax, ecx
xor eax, r8d
xor r14d, r10d
xor r14d, eax
mov eax, dword [rsp + 0x88]
mov edx, eax
movzx r13d, al
shr edx, 0x18
mov r11d, dword [rsi + rdx*4]
mov edx, eax
movzx eax, ah
mov eax, eax
xor ecx, r11d
shr edx, 0x10
vmovd xmm0, ecx
mov ecx, dword [r12 + r13*4]
movzx edx, dl
mov r13d, dword [rbp + rax*4]
mov edx, dword [rdi + rdx*4]
vmovd eax, xmm10
xor r8d, ecx
xor r11d, ecx
vmovd ecx, xmm0
xor r8d, eax
mov eax, ebx
xor r13d, edx
shr eax, 0x18
xor r13d, r11d
mov r11d, dword [rsi + rax*4]
mov eax, ebx
movzx esi, bh
movzx ebx, bl
shr eax, 0x10
movzx eax, al
mov eax, dword [rdi + rax*4]
xor ecx, r11d
xor r11d, dword [r12 + rbx*4]
mov ebx, r9d
xor ebx, ecx
and ebx, 0xff000000
xor edx, eax
xor edx, r15d
mov r15d, esi
vmovd esi, xmm5
mov r15d, dword [rbp + r15*4]
xor eax, r15d
xor r10d, r15d
mov r15d, r14d
xor r10d, esi
xor r11d, eax
mov eax, r13d
xor r15d, edx
xor eax, r10d
and r15d, 0xff0000
and eax, 0xff00
or r15d, eax
mov eax, r8d
xor eax, r11d
movzx eax, al
or eax, ebx
mov ebx, edx
or r15d, eax
mov eax, r10d
shl ebx, 8
shl eax, 8
xor ebx, r13d
mov dword [rsp + 0x80], r15d
xor eax, r11d
and ebx, 0xff0000
and eax, 0xff00
or ebx, eax
mov eax, ecx
shl eax, 8
xor eax, r14d
and eax, 0xff000000
vmovd xmm0, eax
mov eax, r8d
shr eax, 0x18
vmovd esi, xmm0
xor eax, r9d
movzx eax, al
or eax, esi
or ebx, eax
mov eax, ecx
shl ecx, 0x18
shl eax, 0x10
xor ecx, r11d
mov dword [rsp + 0x84], ebx
xor eax, r13d
and ecx, 0xff000000
and eax, 0xff000000
vmovd xmm0, eax
mov eax, r8d
shr eax, 0x10
vmovd esi, xmm0
xor eax, r14d
movzx eax, al
or esi, eax
mov eax, edx
vmovd xmm0, esi
mov esi, r10d
shl eax, 0x10
shr r10d, 8
shr esi, 0x10
xor eax, r11d
xor r10d, r14d
xor esi, r9d
and eax, 0xff0000
and r10d, 0xff00
and esi, 0xff00
or eax, esi
vmovd esi, xmm0
or esi, eax
mov eax, edx
shr eax, 8
vmovd xmm0, esi
mov dword [rsp + 0x88], esi
vmovd esi, xmm1
xor eax, r9d
and eax, 0xff0000
or eax, r10d
shr r8d, 8
xor r8d, r13d
movzx r8d, r8b
or ecx, r8d
or eax, ecx
dec esi
mov dword [rsp + 0x8c], eax
vmovd xmm1, esi
jne 0x1400dc790
mov ecx, dword [rsp + 0x90]
vmovq rdx, xmm11
mov r9d, r15d
vmovd edi, xmm0
shr rdx, 0x20
vmovd xmm0, ebx
mov r15, qword [rsp + 0x1b0]
mov r14, qword [rsp + 0x1c8]
vmovq r13, xmm16
mov ebx, edi
xor ecx, r9d
xor r9d, edx
vmovd edx, xmm0
bswap edx
mov dword [r14], edx
bswap ebx
mov dword [r14 + 4], ebx
bswap eax
mov dword [r14 + 8], eax
bswap ecx
mov dword [r14 + 0xc], ecx
bswap r9d
mov dword [r14 + 0x10], r9d
vmovd eax, xmm4
bswap eax
mov dword [r14 + 0x14], eax
vmovq rax, xmm4
shr rax, 0x20
bswap eax
cmp qword [rsp + 0x1d0], 8
mov dword [r14 + 0x18], eax
je 0x1400dcef0
vpxor xmm0, xmm0, xmm0
movabs rax, 0x6286f757f4c9120d
movabs rdx, 0xe074e3cbee39e01c
vmovdqu8 zmmword [r15 + 0xc], zmm0
vmovdqu8 ymmword [r13 + 0x3c], ymm0
mov qword [r15 + 0x70], rdx
movabs rdx, 0xbd8d679a9a43d215
mov qword [r15 + 0x68], rax
movabs rax, 0xa1127c62e074e3cb
mov qword [r15 + 0x7c], rdx
mov qword [r15 + 0x74], rax
mov qword [r15], 0
mov dword [r15 + 8], 0
mov qword [r15 + 0xa0], 0
vzeroupper
vmovups xmm6, xmmword [rsp + 0x100]
vmovups xmm7, xmmword [rsp + 0x110]
vmovups xmm8, xmmword [rsp + 0x120]
vmovups xmm9, xmmword [rsp + 0x130]
vmovups xmm10, xmmword [rsp + 0x140]
vmovups xmm11, xmmword [rsp + 0x150]
add rsp, 0x168
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov eax, 0xff
shrx eax, eax, r8d
andn eax, eax, edx
cmp ecx, 4
je 0x1400dcf25
mov edx, ecx
mov byte [rsp + rdx + 0x30], al
lea eax, [rcx + 1]
cmp eax, 3
ja 0x1400dcecf
mov byte [rsp + rax + 0x30], 0
lea eax, [rcx + 2]
cmp ecx, 2
jne 0x1400dcf45
mov r8d, 0x10
sub r8, rdx
lea rdx, [rsp + rdx + 0x30]
jmp 0x1400dc3cb
vmovd eax, xmm3
bswap eax
vmovdqu ymm4, ymmword [0x14033ade0]
vpxor xmm0, xmm0, xmm0
mov dword [r14 + 0x1c], eax
vmovdqu8 zmmword [r15 + 0xc], zmm0
vmovdqu8 ymmword [r13 + 0x38], ymm0
vmovdqu ymmword [r15 + 0x64], ymm4
jmp 0x1400dce34
mov byte [rsp + 0x30], al
mov byte [rsp + 0x31], 0
mov word [rsp + 0x32], 0
lea rdx, [rsp + 0x30]
mov r8d, 0x10
jmp 0x1400dc3cb
mov byte [rsp + rax + 0x30], 0
lea eax, [rcx + 3]
cmp ecx, 1
je 0x1400dcecf
mov byte [rsp + rax + 0x30], 0
cmp ecx, 0xffffffff
jne 0x1400dcecf
mov byte [rsp + 0x33], 0
jmp 0x1400dcecf