Function at 0x1400159e0
Capabilities:
Encode data using xor
Encrypt data using aes via x86 extensions

Disassembly:
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x248
movdqa xmmword [rsp + 0x230], xmm15
movdqa xmmword [rsp + 0x220], xmm14
movdqa xmmword [rsp + 0x210], xmm13
movdqa xmmword [rsp + 0x200], xmm12
movdqa xmmword [rsp + 0x1f0], xmm11
movdqa xmmword [rsp + 0x1e0], xmm10
movdqa xmmword [rsp + 0x1d0], xmm9
movdqa xmmword [rsp + 0x1c0], xmm8
movdqa xmmword [rsp + 0x1b0], xmm7
movdqa xmmword [rsp + 0x1a0], xmm6
mov r10, qword [rdx]
mov r8, qword [rdx + 8]
mov rax, qword [rdx + 0x10]
mov rdx, qword [rdx + 0x18]
mov r9d, edx
and r9d, 7
cmp rdx, 8
jb 0x14001601d
mov r11, rdx
shr r11, 3
movaps xmm0, xmmword [rcx]
movaps xmmword [rsp], xmm0
movaps xmm0, xmmword [rcx + 0x10]
movaps xmmword [rsp + 0x10], xmm0
movaps xmm0, xmmword [rcx + 0x20]
movaps xmmword [rsp + 0x40], xmm0
movaps xmm0, xmmword [rcx + 0x30]
movaps xmmword [rsp + 0x30], xmm0
movaps xmm0, xmmword [rcx + 0x40]
movaps xmmword [rsp + 0x20], xmm0
movaps xmm0, xmmword [rcx + 0x50]
movaps xmmword [rsp + 0x80], xmm0
movaps xmm0, xmmword [rcx + 0x60]
movaps xmmword [rsp + 0x70], xmm0
movaps xmm0, xmmword [rcx + 0x70]
movaps xmmword [rsp + 0x60], xmm0
movaps xmm0, xmmword [rcx + 0x80]
movaps xmmword [rsp + 0x50], xmm0
movaps xmm0, xmmword [rcx + 0x90]
movaps xmmword [rsp + 0x160], xmm0
movaps xmm0, xmmword [rcx + 0xa0]
movaps xmmword [rsp + 0x150], xmm0
movaps xmm0, xmmword [rcx + 0xb0]
movaps xmmword [rsp + 0x140], xmm0
movaps xmm0, xmmword [rcx + 0xc0]
movaps xmmword [rsp + 0x130], xmm0
movaps xmm0, xmmword [rcx + 0xd0]
movaps xmmword [rsp + 0x120], xmm0
movdqa xmm0, xmmword [rcx + 0xe0]
movdqa xmmword [rsp + 0x110], xmm0
xor esi, esi
nop word [rax + rax]
mov edi, dword [r10 + 0xc]
mov ebx, dword [r10 + 0x10]
movsd xmm5, qword [r10 + 4]
lea ebp, [rbx + 8]
mov dword [r10 + 0x10], ebp
movss xmm6, dword [r10]
lea ebp, [rbx + rdi + 7]
bswap ebp
movd xmm1, ebp
lea ebp, [rbx + rdi + 6]
shufps xmm1, xmm5, 0xd4
bswap ebp
movd xmm3, ebp
lea ebp, [rbx + rdi + 5]
shufps xmm3, xmm5, 0xd4
bswap ebp
movd xmm4, ebp
shufps xmm4, xmm5, 0xd4
movaps xmm2, xmm5
movaps xmm0, xmm5
unpcklps xmm2, xmm6
movaps xmm8, xmm2
shufps xmm8, xmm1, 0x21
movaps xmm5, xmmword [rsp]
xorps xmm8, xmm5
movaps xmm1, xmm2
shufps xmm1, xmm3, 0x21
movdqa xmm6, xmmword [rsp + 0x10]
aesenc xmm8, xmm6
xorps xmm1, xmm5
movaps xmm3, xmm2
aesenc xmm1, xmm6
shufps xmm3, xmm4, 0x21
xorps xmm3, xmm5
movaps xmm7, xmm5
movdqa xmm4, xmmword [rsp + 0x40]
aesenc xmm8, xmm4
aesenc xmm3, xmm6
movdqa xmm9, xmm6
aesenc xmm1, xmm4
movdqa xmm5, xmm4
lea ebp, [rbx + rdi + 4]
aesenc xmm3, xmm4
bswap ebp
movd xmm6, ebp
movdqa xmm10, xmmword [rsp + 0x30]
aesenc xmm8, xmm10
shufps xmm6, xmm0, 0xd4
movaps xmm13, xmm0
movaps xmm4, xmm2
aesenc xmm1, xmm10
shufps xmm4, xmm6, 0x21
xorps xmm4, xmm7
aesenc xmm3, xmm10
aesenc xmm4, xmm9
movdqa xmm12, xmmword [rsp + 0x20]
aesenc xmm8, xmm12
aesenc xmm4, xmm5
movdqa xmm11, xmm5
aesenc xmm1, xmm12
aesenc xmm4, xmm10
aesenc xmm3, xmm12
aesenc xmm4, xmm12
movdqa xmm5, xmmword [rsp + 0x80]
aesenc xmm8, xmm5
lea ebp, [rbx + rdi + 3]
aesenc xmm1, xmm5
bswap ebp
movd xmm6, ebp
aesenc xmm3, xmm5
shufps xmm6, xmm0, 0xd4
lea ebp, [rbx + rdi + 2]
aesenc xmm4, xmm5
bswap ebp
movd xmm0, ebp
movdqa xmm14, xmmword [rsp + 0x70]
aesenc xmm8, xmm14
shufps xmm0, xmm13, 0xd4
movaps xmmword [rsp + 0x190], xmm0
movaps xmmword [rsp + 0x170], xmm13
lea ebp, [rbx + rdi + 1]
aesenc xmm1, xmm14
bswap ebp
movd xmm0, ebp
aesenc xmm3, xmm14
shufps xmm0, xmm13, 0xd4
movaps xmmword [rsp + 0x180], xmm0
movaps xmm15, xmm2
aesenc xmm4, xmm14
shufps xmm15, xmm6, 0x21
xorps xmm15, xmm7
movdqa xmm6, xmmword [rsp + 0x60]
aesenc xmm8, xmm6
aesenc xmm15, xmm9
aesenc xmm1, xmm6
movdqa xmm13, xmm11
aesenc xmm15, xmm11
aesenc xmm3, xmm6
aesenc xmm15, xmm10
aesenc xmm4, xmm6
aesenc xmm15, xmm12
movdqa xmm11, xmmword [rsp + 0x50]
aesenc xmm8, xmm11
aesenc xmm15, xmm5
aesenc xmm1, xmm11
aesenc xmm15, xmm14
movdqa xmm0, xmm14
aesenc xmm3, xmm11
aesenc xmm15, xmm6
aesenc xmm4, xmm11
aesenc xmm15, xmm11
movdqa xmm14, xmm11
movdqa xmm11, xmmword [rsp + 0x160]
aesenc xmm8, xmm11
lea edi, [rbx + rdi]
movaps xmm6, xmm2
aesenc xmm1, xmm11
shufps xmm6, xmmword [rsp + 0x190], 0x21
xorps xmm6, xmm7
aesenc xmm3, xmm11
aesenc xmm6, xmm9
aesenc xmm4, xmm11
aesenc xmm6, xmm13
aesenc xmm15, xmm11
aesenc xmm6, xmm10
movdqa xmm9, xmmword [rsp + 0x150]
aesenc xmm8, xmm9
aesenc xmm6, xmm12
aesenc xmm1, xmm9
movdqa xmm12, xmm5
aesenc xmm6, xmm5
aesenc xmm3, xmm9
aesenc xmm6, xmm0
aesenc xmm4, xmm9
movdqa xmm10, xmmword [rsp + 0x60]
aesenc xmm6, xmm10
aesenc xmm15, xmm9
aesenc xmm6, xmm14
movdqa xmm7, xmmword [rsp + 0x140]
aesenc xmm8, xmm7
aesenc xmm6, xmm11
aesenc xmm1, xmm7
aesenc xmm6, xmm9
aesenc xmm3, xmm7
bswap edi
movd xmm13, edi
aesenc xmm4, xmm7
shufps xmm13, xmmword [rsp + 0x170], 0xd4
movaps xmm5, xmm2
aesenc xmm15, xmm7
shufps xmm5, xmmword [rsp + 0x180], 0x21
xorps xmm5, xmmword [rsp]
aesenc xmm6, xmm7
aesenc xmm5, xmmword [rsp + 0x10]
movdqa xmm14, xmmword [rsp + 0x130]
aesenc xmm8, xmm14
aesenc xmm5, xmmword [rsp + 0x40]
aesenc xmm1, xmm14
aesenc xmm5, xmmword [rsp + 0x30]
aesenc xmm3, xmm14
aesenc xmm5, xmmword [rsp + 0x20]
aesenc xmm4, xmm14
aesenc xmm5, xmm12
aesenc xmm15, xmm14
aesenc xmm5, xmm0
aesenc xmm6, xmm14
aesenc xmm5, xmm10
movdqa xmm0, xmmword [rsp + 0x120]
aesenc xmm8, xmm0
movdqa xmm12, xmmword [rsp + 0x50]
aesenc xmm5, xmm12
aesenc xmm1, xmm0
aesenc xmm5, xmm11
aesenc xmm3, xmm0
aesenc xmm5, xmm9
aesenc xmm4, xmm0
aesenc xmm5, xmm7
aesenc xmm15, xmm0
aesenc xmm5, xmm14
aesenc xmm6, xmm0
shufps xmm2, xmm13, 0x21
xorps xmm2, xmmword [rsp]
aesenc xmm5, xmm0
aesenc xmm2, xmmword [rsp + 0x10]
movdqa xmm13, xmmword [rsp + 0x110]
aesenclast xmm8, xmm13
aesenc xmm2, xmmword [rsp + 0x40]
aesenclast xmm1, xmm13
aesenc xmm2, xmmword [rsp + 0x30]
aesenclast xmm3, xmm13
aesenc xmm2, xmmword [rsp + 0x20]
aesenclast xmm4, xmm13
aesenc xmm2, xmmword [rsp + 0x80]
aesenclast xmm15, xmm13
aesenc xmm2, xmmword [rsp + 0x70]
aesenclast xmm6, xmm13
aesenc xmm2, xmm10
aesenclast xmm5, xmm13
movdqu xmm10, xmmword [r8 + rsi + 0x70]
aesenc xmm2, xmm12
pxor xmm8, xmm10
movdqu xmm10, xmmword [r8 + rsi + 0x60]
aesenc xmm2, xmm11
pxor xmm1, xmm10
movdqu xmm10, xmmword [r8 + rsi + 0x50]
aesenc xmm2, xmm9
pxor xmm3, xmm10
movdqu xmm9, xmmword [r8 + rsi + 0x40]
aesenc xmm2, xmm7
pxor xmm4, xmm9
movdqu xmm7, xmmword [r8 + rsi + 0x30]
aesenc xmm2, xmm14
pxor xmm15, xmm7
movdqu xmm7, xmmword [r8 + rsi + 0x20]
aesenc xmm2, xmm0
pxor xmm6, xmm7
movdqu xmm7, xmmword [r8 + rsi + 0x10]
aesenclast xmm2, xmm13
pxor xmm5, xmm7
movdqu xmm7, xmmword [r8 + rsi]
pxor xmm2, xmm7
movdqu xmmword [rax + rsi], xmm2
movdqu xmmword [rax + rsi + 0x10], xmm5
movdqu xmmword [rax + rsi + 0x20], xmm6
movdqu xmmword [rax + rsi + 0x30], xmm15
movdqu xmmword [rax + rsi + 0x40], xmm4
movdqu xmmword [rax + rsi + 0x50], xmm3
movdqu xmmword [rax + rsi + 0x60], xmm1
movdqu xmmword [rax + rsi + 0x70], xmm8
sub rsi, 0xffffffffffffff80
dec r11
jne 0x140015b30
pxor xmm0, xmm0
movdqa xmmword [rsp + 0x100], xmm0
movdqa xmmword [rsp + 0xf0], xmm0
movdqa xmmword [rsp + 0xe0], xmm0
movdqa xmmword [rsp + 0xd0], xmm0
movdqa xmmword [rsp + 0xc0], xmm0
movdqa xmmword [rsp + 0xb0], xmm0
movdqa xmmword [rsp + 0xa0], xmm0
test r9, r9
je 0x140016512
mov esi, dword [r10 + 0xc]
mov r11d, dword [r10 + 0x10]
movsd xmm1, qword [r10 + 4]
movss xmm0, dword [r10]
unpcklps xmm1, xmm0
movaps xmm0, xmmword [rcx]
movdqa xmm13, xmmword [rcx + 0x10]
movdqa xmm11, xmmword [rcx + 0x20]
movdqa xmm10, xmmword [rcx + 0x30]
movdqa xmm9, xmmword [rcx + 0x40]
movdqa xmm8, xmmword [rcx + 0x50]
movdqa xmm7, xmmword [rcx + 0x60]
movdqa xmm6, xmmword [rcx + 0x70]
movdqa xmm5, xmmword [rcx + 0x80]
movdqa xmm4, xmmword [rcx + 0x90]
movdqa xmm3, xmmword [rcx + 0xa0]
movdqa xmm14, xmmword [rcx + 0xb0]
movdqa xmm2, xmmword [rcx + 0xc0]
lea edi, [r11 + rsi]
bswap edi
movd xmm12, edi
shufps xmm12, xmm1, 0xe4
movaps xmm15, xmm1
shufps xmm15, xmm12, 0x21
movdqa xmm12, xmmword [rcx + 0xd0]
xorps xmm15, xmm0
aesenc xmm15, xmm13
aesenc xmm15, xmm11
aesenc xmm15, xmm10
aesenc xmm15, xmm9
aesenc xmm15, xmm8
aesenc xmm15, xmm7
aesenc xmm15, xmm6
aesenc xmm15, xmm5
aesenc xmm15, xmm4
aesenc xmm15, xmm3
movdqa xmmword [rsp], xmm14
aesenc xmm15, xmm14
aesenc xmm15, xmm2
aesenc xmm15, xmm12
lea edi, [r11 + 1]
movdqa xmm14, xmmword [rcx + 0xe0]
aesenclast xmm15, xmm14
mov dword [r10 + 0x10], edi
movdqa xmmword [rsp + 0x90], xmm15
movabs rcx, 0xffffffffffffff8
and rcx, rdx
shl rcx, 4
add r8, rcx
add rax, rcx
cmp r9d, 1
jne 0x140016195
and edx, 1
xor ecx, ecx
jmp 0x1400164f5
pshufd xmm15, xmm1, 0xe1
add edi, esi
bswap edi
movdqa xmmword [rsp + 0x10], xmm2
movd xmm2, edi
shufps xmm2, xmm15, 0xe4
movdqa xmm1, xmm15
shufps xmm1, xmm2, 0x24
lea ecx, [r11 + 2]
mov dword [r10 + 0x10], ecx
xorps xmm1, xmm0
aesenc xmm1, xmm13
aesenc xmm1, xmm11
aesenc xmm1, xmm10
aesenc xmm1, xmm9
aesenc xmm1, xmm8
aesenc xmm1, xmm7
aesenc xmm1, xmm6
aesenc xmm1, xmm5
aesenc xmm1, xmm4
aesenc xmm1, xmm3
aesenc xmm1, xmmword [rsp]
aesenc xmm1, xmmword [rsp + 0x10]
aesenc xmm1, xmm12
aesenclast xmm1, xmm14
movdqa xmmword [rsp + 0xa0], xmm1
cmp r9d, 2
je 0x1400164aa
add ecx, esi
bswap ecx
movd xmm2, ecx
shufps xmm2, xmm15, 0xe4
movdqa xmm1, xmm15
shufps xmm1, xmm2, 0x24
lea ecx, [r11 + 3]
mov dword [r10 + 0x10], ecx
xorps xmm1, xmm0
aesenc xmm1, xmm13
aesenc xmm1, xmm11
aesenc xmm1, xmm10
aesenc xmm1, xmm9
aesenc xmm1, xmm8
aesenc xmm1, xmm7
aesenc xmm1, xmm6
aesenc xmm1, xmm5
aesenc xmm1, xmm4
aesenc xmm1, xmm3
aesenc xmm1, xmmword [rsp]
aesenc xmm1, xmmword [rsp + 0x10]
aesenc xmm1, xmm12
aesenclast xmm1, xmm14
movdqa xmmword [rsp + 0xb0], xmm1
cmp r9d, 3
je 0x1400164aa
add ecx, esi
bswap ecx
movd xmm2, ecx
shufps xmm2, xmm15, 0xe4
movdqa xmm1, xmm15
shufps xmm1, xmm2, 0x24
lea ecx, [r11 + 4]
mov dword [r10 + 0x10], ecx
xorps xmm1, xmm0
aesenc xmm1, xmm13
aesenc xmm1, xmm11
aesenc xmm1, xmm10
aesenc xmm1, xmm9
aesenc xmm1, xmm8
aesenc xmm1, xmm7
aesenc xmm1, xmm6
aesenc xmm1, xmm5
aesenc xmm1, xmm4
aesenc xmm1, xmm3
aesenc xmm1, xmmword [rsp]
aesenc xmm1, xmmword [rsp + 0x10]
aesenc xmm1, xmm12
aesenclast xmm1, xmm14
movdqa xmmword [rsp + 0xc0], xmm1
cmp r9d, 4
je 0x1400164aa
add ecx, esi
bswap ecx
movd xmm2, ecx
shufps xmm2, xmm15, 0xe4
movdqa xmm1, xmm15
shufps xmm1, xmm2, 0x24
lea ecx, [r11 + 5]
mov dword [r10 + 0x10], ecx
xorps xmm1, xmm0
aesenc xmm1, xmm13
aesenc xmm1, xmm11
aesenc xmm1, xmm10
aesenc xmm1, xmm9
aesenc xmm1, xmm8
aesenc xmm1, xmm7
aesenc xmm1, xmm6
aesenc xmm1, xmm5
aesenc xmm1, xmm4
aesenc xmm1, xmm3
aesenc xmm1, xmmword [rsp]
aesenc xmm1, xmmword [rsp + 0x10]
aesenc xmm1, xmm12
aesenclast xmm1, xmm14
movdqa xmmword [rsp + 0xd0], xmm1
cmp r9d, 5
je 0x1400164aa
add ecx, esi
bswap ecx
movd xmm2, ecx
shufps xmm2, xmm15, 0xe4
movdqa xmm1, xmm15
shufps xmm1, xmm2, 0x24
movdqa xmm2, xmmword [rsp + 0x10]
lea ecx, [r11 + 6]
mov dword [r10 + 0x10], ecx
xorps xmm1, xmm0
aesenc xmm1, xmm13
aesenc xmm1, xmm11
aesenc xmm1, xmm10
aesenc xmm1, xmm9
aesenc xmm1, xmm8
aesenc xmm1, xmm7
aesenc xmm1, xmm6
aesenc xmm1, xmm5
aesenc xmm1, xmm4
aesenc xmm1, xmm3
aesenc xmm1, xmmword [rsp]
aesenc xmm1, xmm2
aesenc xmm1, xmm12
aesenclast xmm1, xmm14
movdqa xmmword [rsp + 0xe0], xmm1
cmp r9d, 6
je 0x1400164aa
add ecx, esi
bswap ecx
movd xmm1, ecx
shufps xmm1, xmm15, 0xe4
shufps xmm15, xmm1, 0x24
xorps xmm0, xmm15
aesenc xmm0, xmm13
aesenc xmm0, xmm11
aesenc xmm0, xmm10
aesenc xmm0, xmm9
aesenc xmm0, xmm8
aesenc xmm0, xmm7
aesenc xmm0, xmm6
aesenc xmm0, xmm5
aesenc xmm0, xmm4
aesenc xmm0, xmm3
aesenc xmm0, xmmword [rsp]
aesenc xmm0, xmm2
aesenc xmm0, xmm12
aesenclast xmm0, xmm14
add r11d, 7
mov dword [r10 + 0x10], r11d
movdqa xmmword [rsp + 0xf0], xmm0
and edx, 1
sub r9, rdx
mov r10d, 0x10
xor ecx, ecx
nop dword [rax + rax]
movups xmm0, xmmword [r8 + r10 - 0x10]
xorps xmm0, xmmword [rsp + r10 + 0x80]
movups xmmword [rax + r10 - 0x10], xmm0
movups xmm0, xmmword [r8 + r10]
xorps xmm0, xmmword [rsp + r10 + 0x90]
add rcx, 2
movups xmmword [rax + r10], xmm0
add r10, 0x20
cmp r9, rcx
jne 0x1400164c0
test rdx, rdx
je 0x140016512
shl rcx, 4
movdqu xmm0, xmmword [r8 + rcx]
pxor xmm0, xmmword [rsp + rcx + 0x90]
movdqu xmmword [rax + rcx], xmm0
movaps xmm6, xmmword [rsp + 0x1a0]
movaps xmm7, xmmword [rsp + 0x1b0]
movaps xmm8, xmmword [rsp + 0x1c0]
movaps xmm9, xmmword [rsp + 0x1d0]
movaps xmm10, xmmword [rsp + 0x1e0]
movaps xmm11, xmmword [rsp + 0x1f0]
movaps xmm12, xmmword [rsp + 0x200]
movaps xmm13, xmmword [rsp + 0x210]
movaps xmm14, xmmword [rsp + 0x220]
movaps xmm15, xmmword [rsp + 0x230]
add rsp, 0x248
pop rbx
pop rbp
pop rdi
pop rsi
ret