Function at 0x409970
Capabilities:
Encode data using xor

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x100
vbroadcastss ymm0, dword [0x00450230]
bswap r8
bswap rdx
movabs r10, 0xc200000000000000
mov rax, r8
shr rax, 0x3f
add r8, r8
lea rax, [rax + rdx*2]
sar rdx, 0x3f
and r10, rdx
sub r8, rdx
xor rax, r10
vmovq xmm1, r8
vmovups ymmword [rsp + 0xe0], ymm0
vmovups ymmword [rsp + 0xc0], ymm0
vmovups ymmword [rsp + 0xa0], ymm0
vmovups ymmword [rsp + 0x80], ymm0
vmovups ymmword [rsp + 0x60], ymm0
vmovups ymmword [rsp + 0x40], ymm0
vmovq xmm0, rax
mov qword [rsp], r8
mov qword [rsp + 8], rax
vpunpcklqdq xmm0, xmm1, xmm0
vpclmulqdq xmm2, xmm0, xmm0, 0x11
vpclmulqdq xmm3, xmm0, xmm0, 0
vpextrq rax, xmm3, 1
vmovq rdx, xmm3
vmovaps xmm1, xmmword [0x00450220]
vpclmulqdq xmm3, xmm1, xmm3, 0
vpextrq r8, xmm3, 1
xor r8, rdx
vmovq rdx, xmm3
xor rdx, rax
vmovq xmm3, r8
vmovq xmm4, rdx
vpunpcklqdq xmm3, xmm4, xmm3
vpclmulqdq xmm3, xmm1, xmm3, 0
vpxor xmm2, xmm3, xmm2
vpextrq rax, xmm2, 1
vmovq r10, xmm2
xor r10, r8
xor rax, rdx
vmovq xmm2, rax
vmovq xmm3, r10
mov qword [rsp + 0x18], rax
mov qword [rsp + 0x10], r10
vpunpcklqdq xmm2, xmm3, xmm2
vpclmulqdq xmm3, xmm0, xmm2, 0x11
vpextrq r8, xmm3, 1
vmovq rax, xmm3
vpclmulqdq xmm3, xmm0, xmm2, 0
vpclmulqdq xmm4, xmm0, xmm2, 0x10
vpclmulqdq xmm5, xmm2, xmm0, 0x10
vpxor xmm4, xmm5, xmm4
vpextrq rdx, xmm3, 1
vmovq r10, xmm3
vmovq rsi, xmm4
vpextrq r11, xmm4, 1
xor rsi, rdx
xor r11, rax
vmovq xmm4, rsi
vpunpcklqdq xmm3, xmm3, xmm4
vpclmulqdq xmm3, xmm1, xmm3, 0
vpextrq rax, xmm3, 1
vmovq rdx, xmm3
xor rax, r10
xor rdx, rsi
vmovq xmm3, rdx
vmovq xmm4, rax
xor rdx, r8
xor rax, r11
vpunpcklqdq xmm3, xmm3, xmm4
vpclmulqdq xmm3, xmm1, xmm3, 0
vpextrq r10, xmm3, 1
vmovq rsi, xmm3
vpclmulqdq xmm3, xmm2, xmm2, 0x11
vpclmulqdq xmm2, xmm2, xmm2, 0
vmovq r8, xmm2
xor rdx, r10
xor rax, rsi
vpextrq r10, xmm2, 1
vpclmulqdq xmm2, xmm1, xmm2, 0
vpextrq r11, xmm2, 1
vmovq rsi, xmm2
xor r11, r8
xor rsi, r10
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x20], rax
vmovq xmm2, r11
vmovq xmm4, rsi
vpunpcklqdq xmm2, xmm4, xmm2
vpclmulqdq xmm2, xmm1, xmm2, 0
vpxor xmm2, xmm2, xmm3
vpextrq r8, xmm2, 1
vmovq r10, xmm2
xor r10, r11
xor r8, rsi
mov qword [rsp + 0x38], r8
mov qword [rsp + 0x30], r10
cmp r9, 0x54
jb 0x409ec1
vmovq xmm2, r10
vmovq xmm3, r8
vpunpcklqdq xmm2, xmm2, xmm3
vpclmulqdq xmm3, xmm0, xmm2, 0x11
vpextrq r8, xmm3, 1
vmovq r10, xmm3
vpclmulqdq xmm3, xmm0, xmm2, 0
vpclmulqdq xmm4, xmm0, xmm2, 0x10
vpclmulqdq xmm5, xmm2, xmm0, 0x10
vpxor xmm4, xmm5, xmm4
vpextrq r11, xmm3, 1
vmovq rsi, xmm3
vmovq rbx, xmm4
vpextrq rdi, xmm4, 1
xor rbx, r11
xor rdi, r10
vmovq xmm4, rbx
vpunpcklqdq xmm3, xmm3, xmm4
vpclmulqdq xmm3, xmm1, xmm3, 0
vpextrq r11, xmm3, 1
xor r11, rsi
vmovq rsi, xmm3
xor rsi, rbx
vmovq xmm4, r11
xor r11, rdi
vmovq xmm3, rsi
xor rsi, r8
vpunpcklqdq xmm3, xmm3, xmm4
vpclmulqdq xmm3, xmm1, xmm3, 0
vpextrq r10, xmm3, 1
vmovq rbx, xmm3
vmovq xmm3, rax
vmovq xmm4, rdx
xor rsi, r10
vpunpcklqdq xmm3, xmm3, xmm4
vpclmulqdq xmm4, xmm3, xmm3, 0x11
vpclmulqdq xmm3, xmm3, xmm3, 0
vmovq rax, xmm3
vpextrq rdx, xmm3, 1
vpclmulqdq xmm3, xmm1, xmm3, 0
vpextrq r8, xmm3, 1
xor r11, rbx
mov qword [rsp + 0x48], rsi
vmovq rsi, xmm3
xor r8, rax
mov qword [rsp + 0x40], r11
xor rsi, rdx
vmovq xmm3, r8
vmovq xmm5, rsi
vpunpcklqdq xmm3, xmm5, xmm3
vpclmulqdq xmm3, xmm1, xmm3, 0
vpxor xmm3, xmm3, xmm4
vpextrq rdx, xmm3, 1
vmovq r10, xmm3
xor r10, r8
xor rdx, rsi
vmovq xmm3, rdx
vmovq xmm4, r10
mov qword [rsp + 0x58], rdx
mov qword [rsp + 0x50], r10
vpunpcklqdq xmm3, xmm4, xmm3
vpclmulqdq xmm4, xmm0, xmm3, 0x11
vpextrq rax, xmm4, 1
vmovq rdx, xmm4
vpclmulqdq xmm4, xmm0, xmm3, 0
vpclmulqdq xmm5, xmm0, xmm3, 0x10
vpclmulqdq xmm3, xmm3, xmm0, 0x10
vpxor xmm3, xmm3, xmm5
vpextrq r8, xmm4, 1
vmovq r10, xmm4
vmovq rsi, xmm3
vpextrq r11, xmm3, 1
xor rsi, r8
xor r11, rdx
vmovq xmm3, rsi
vpunpcklqdq xmm3, xmm4, xmm3
vpclmulqdq xmm3, xmm1, xmm3, 0
vpextrq r8, xmm3, 1
vmovq rdi, xmm3
xor r8, r10
xor rdi, rsi
vmovq xmm3, rdi
vmovq xmm4, r8
xor rdi, rax
xor r8, r11
vpunpcklqdq xmm3, xmm3, xmm4
vpclmulqdq xmm3, xmm1, xmm3, 0
vpextrq rdx, xmm3, 1
vmovq rsi, xmm3
vpclmulqdq xmm3, xmm2, xmm2, 0x11
vpclmulqdq xmm2, xmm2, xmm2, 0
vmovq rax, xmm2
xor rdi, rdx
xor r8, rsi
vpextrq rdx, xmm2, 1
vpclmulqdq xmm2, xmm1, xmm2, 0
vpextrq rsi, xmm2, 1
vmovq r11, xmm2
xor rsi, rax
xor r11, rdx
mov qword [rsp + 0x68], rdi
mov qword [rsp + 0x60], r8
vmovq xmm2, rsi
vmovq xmm4, r11
vpunpcklqdq xmm2, xmm4, xmm2
vpclmulqdq xmm2, xmm1, xmm2, 0
vpxor xmm2, xmm2, xmm3
vpextrq rdx, xmm2, 1
vmovq r10, xmm2
xor r10, rsi
xor rdx, r11
mov qword [rsp + 0x78], rdx
mov qword [rsp + 0x70], r10
cmp r9, 0x148
jb 0x409ec1
mov eax, 6
lea rdx, [rsp + 0x90]
nop word cs:[rax + rax]
vmovaps xmm2, xmmword [rdx - 0x20]
vpclmulqdq xmm3, xmm0, xmm2, 0x11
vpextrq r8, xmm3, 1
vmovq r9, xmm3
vpclmulqdq xmm3, xmm0, xmm2, 0
vpclmulqdq xmm4, xmm0, xmm2, 0x10
vpclmulqdq xmm2, xmm2, xmm0, 0x10
vpxor xmm2, xmm2, xmm4
vpextrq r11, xmm3, 1
vmovq r10, xmm3
vmovq rdi, xmm2
vpextrq rsi, xmm2, 1
xor rdi, r11
xor rsi, r9
vmovq xmm2, rdi
vpunpcklqdq xmm2, xmm3, xmm2
vpclmulqdq xmm2, xmm1, xmm2, 0
vpextrq r11, xmm2, 1
vmovq rbx, xmm2
xor r11, r10
xor rbx, rdi
vmovq xmm2, rbx
vmovq xmm3, r11
xor rbx, r8
xor r11, rsi
vpunpcklqdq xmm2, xmm2, xmm3
vpclmulqdq xmm2, xmm1, xmm2, 0
vpextrq r9, xmm2, 1
vmovq rdi, xmm2
xor rbx, r9
xor r11, rdi
mov qword [rdx - 8], rbx
mov qword [rdx - 0x10], r11
vmovaps xmm2, xmmword [rsp + rax*8 + 0x10]
vpclmulqdq xmm3, xmm2, xmm2, 0x11
vpclmulqdq xmm2, xmm2, xmm2, 0
vmovq r8, xmm2
vpextrq r9, xmm2, 1
vpclmulqdq xmm2, xmm1, xmm2, 0
vpextrq r10, xmm2, 1
add rax, 2
xor r10, r8
vmovq r8, xmm2
xor r8, r9
vmovq xmm2, r10
vmovq xmm4, r8
vpunpcklqdq xmm2, xmm4, xmm2
vpclmulqdq xmm2, xmm1, xmm2, 0
vpxor xmm2, xmm2, xmm3
vmovq r9, xmm2
vpextrq r11, xmm2, 1
xor r11, r8
xor r9, r10
mov qword [rdx], r9
mov qword [rdx + 8], r11
add rdx, 0x20
cmp rax, 0xe
jb 0x409db0
vmovups ymm0, ymmword [rsp + 0xe0]
mov r8, qword [rsp + 0x70]
vmovups xmm1, xmmword [rsp + 0x20]
vmovups ymm2, ymmword [rsp + 0x40]
vmovups xmm3, xmmword [rsp + 0x60]
mov rax, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x38]
mov qword [rcx + 0x70], r8
mov r8, qword [rsp + 0x78]
mov qword [rcx + 0x30], rax
mov qword [rcx + 0x38], rdx
vmovups ymmword [rcx + 0xe0], ymm0
vmovups ymm0, ymmword [rsp + 0xc0]
vmovups xmmword [rcx + 0x60], xmm3
vmovups ymmword [rcx + 0x40], ymm2
vmovups xmmword [rcx + 0x20], xmm1
mov qword [rcx + 0x78], r8
vmovups ymmword [rcx + 0xc0], ymm0
vmovups ymm0, ymmword [rsp + 0xa0]
vmovups ymmword [rcx + 0xa0], ymm0
vmovups ymm0, ymmword [rsp + 0x80]
vmovups ymmword [rcx + 0x80], ymm0
vmovups ymm0, ymmword [rsp]
vmovups ymmword [rcx], ymm0
vxorps xmm0, xmm0, xmm0
vmovups ymmword [rcx + 0x100], ymm0
mov qword [rcx + 0x120], 0
add rsp, 0x100
pop rbx
pop rdi
pop rsi
vzeroupper
ret