// File: /workspace/github_cpp_makefile_star2_O1/ushitora-anqou[P]aqtfhe2/./aqtfhe2.hpp
// Function: aqtfhe2::detail::fft_processor<1024ul>::fft_processor()
fft_processor()
    {
        // new fft table
        {
            constexpr size_t n = 2 * N, ns4 = n / 4;
            auto it = tables_direct_.begin();
            for (size_t halfnn = 4; halfnn < ns4; halfnn *= 2) {
                const size_t nn = 2 * halfnn;
                const size_t j = n / nn;
                for (size_t i = 0; i < halfnn; i += 4) {
                    for (size_t k = 0; k < 4; k++)
                        *it++ = accurate_cos(-j * (i + k), n);
                    for (size_t k = 0; k < 4; k++)
                        *it++ = accurate_sin(-j * (i + k), n);
                }
            }
            // last iteration
            for (size_t i = 0; i < ns4; i += 4) {
                for (size_t k = 0; k < 4; k++)
                    *it++ = accurate_cos(-(i + k), n);
                for (size_t k = 0; k < 4; k++)
                    *it++ = accurate_sin(-(i + k), n);
            }
        }

        // new ifft table
        {
            constexpr size_t n = 2 * N, ns4 = n / 4;
            auto it = tables_reverse_.begin();
            // first iteration
            for (size_t j = 0; j < ns4; j += 4) {
                for (size_t k = 0; k < 4; k++)
                    *it++ = accurate_cos(j + k, n);
                for (size_t k = 0; k < 4; k++)
                    *it++ = accurate_sin(j + k, n);
            }
            // subsequent iterations
            for (size_t nn = ns4; nn >= 8; nn /= 2) {
                size_t halfnn = nn / 2;
                size_t j = n / nn;
                for (size_t i = 0; i < halfnn; i += 4) {
                    for (size_t k = 0; k < 4; k++)
                        *it++ = accurate_cos(j * (i + k), n);
                    for (size_t k = 0; k < 4; k++)
                        *it++ = accurate_sin(j * (i + k), n);
                }
            }
        }
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdi, %rbx
movl $0x4, %eax
movq %rdi, %r15
movq %rax, (%rsp)
leaq (%rax,%rax), %rcx
movl $0x800, %eax            # imm = 0x800
xorl %edx, %edx
movq %rcx, 0x40(%rsp)
divq %rcx
movq %rax, %r14
leal (,%rax,4), %eax
movl %eax, 0x10(%rsp)
xorl %ebp, %ebp
xorl %eax, %eax
movq %rax, 0x20(%rsp)
movl %ebp, %r12d
xorl %r13d, %r13d
movl %r12d, %eax
andl $0x7ff, %eax            # imm = 0x7FF
cmpl $0x600, %eax            # imm = 0x600
jae 0x4461
cmpl $0x400, %eax            # imm = 0x400
jae 0x447b
cmpl $0x200, %eax            # imm = 0x200
jae 0x4486
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x446c
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x3c34(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2210
jmp 0x44a8
addl $0xfffffc00, %eax       # imm = 0xFFFFFC00
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x4491
movl $0x400, %ecx            # imm = 0x400
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x3c0f(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2210
vxorpd 0x3b88(%rip){1to2}, %xmm0, %xmm0 # 0x8030
vmovsd %xmm0, (%r15,%r13)
addq $0x8, %r13
subl %r14d, %r12d
cmpq $0x20, %r13
jne 0x443e
addq %r13, %r15
movl $0x4, %r13d
movl %ebp, %r12d
movl %r12d, %eax
andl $0x7ff, %eax            # imm = 0x7FF
cmpl $0x600, %eax            # imm = 0x600
jae 0x44ea
cmpl $0x400, %eax            # imm = 0x400
jae 0x44f7
cmpl $0x200, %eax            # imm = 0x200
jae 0x450a
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x4515
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
jmp 0x4500
addl $0xfffffc00, %eax       # imm = 0xFFFFFC00
vcvtsi2sd %eax, %xmm1, %xmm0
vmulsd 0x3ba8(%rip), %xmm0, %xmm0 # 0x80b0
jmp 0x451d
movl $0x400, %ecx            # imm = 0x400
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x3b8b(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2050
vmovsd %xmm0, (%r15)
addq $0x8, %r15
subl %r14d, %r12d
decq %r13
jne 0x44c7
movq 0x20(%rsp), %rax
addq $0x4, %rax
subl 0x10(%rsp), %ebp
cmpq (%rsp), %rax
jb 0x4433
cmpq $0x100, (%rsp)          # imm = 0x100
movq 0x40(%rsp), %rax
jb 0x440a
xorl %r14d, %r14d
xorl %r12d, %r12d
xorl %r13d, %r13d
leal (%r14,%r13), %eax
andl $0x7ff, %eax            # imm = 0x7FF
cmpl $0x600, %eax            # imm = 0x600
jae 0x458a
cmpl $0x400, %eax            # imm = 0x400
jae 0x45a4
cmpl $0x200, %eax            # imm = 0x200
jae 0x45af
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x4595
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x3b0b(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2210
jmp 0x45d1
addl $0xfffffc00, %eax       # imm = 0xFFFFFC00
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x45ba
movl $0x400, %ecx            # imm = 0x400
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x3ae6(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2210
vxorpd 0x3a5f(%rip){1to2}, %xmm0, %xmm0 # 0x8030
vmovsd %xmm0, (%r15)
addq $0x8, %r15
decq %r13
cmpq $-0x4, %r13
jne 0x4566
xorl %r13d, %r13d
leal (%r14,%r13), %eax
andl $0x7ff, %eax            # imm = 0x7FF
cmpl $0x600, %eax            # imm = 0x600
jae 0x460a
cmpl $0x400, %eax            # imm = 0x400
jae 0x4617
cmpl $0x200, %eax            # imm = 0x200
jae 0x462a
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x4635
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
jmp 0x4620
addl $0xfffffc00, %eax       # imm = 0xFFFFFC00
vcvtsi2sd %eax, %xmm1, %xmm0
vmulsd 0x3a88(%rip), %xmm0, %xmm0 # 0x80b0
jmp 0x463d
movl $0x400, %ecx            # imm = 0x400
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x3a6b(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2050
vmovsd %xmm0, (%r15)
addq $0x8, %r15
decq %r13
cmpq $-0x4, %r13
jne 0x45e6
leaq 0x4(%r12), %rax
addq $-0x4, %r14
cmpq $0x1fc, %r12            # imm = 0x1FC
movq %rax, %r12
jb 0x4563
addq $0x4000, %rbx           # imm = 0x4000
xorl %r13d, %r13d
leaq 0x68(%rsp), %r14
leaq 0x80(%rsp), %r15
leaq 0x78(%rsp), %r12
movq %rbx, %rbp
vpbroadcastd %r13d, %xmm0
vpor 0x3a96(%rip), %xmm0, %xmm0 # 0x8130
vcvtdq2pd %xmm0, %ymm0
vmulpd 0x3a00(%rip){1to4}, %ymm0, %ymm0 # 0x80a8
vmovupd %ymm0, 0x20(%rsp)
leaq 0x50(%rsp), %rdi
leaq 0x48(%rsp), %rsi
vzeroupper
callq 0x20c0
vmovsd 0x48(%rsp), %xmm0
vmovaps %xmm0, (%rsp)
vpermilpd $0x1, 0x20(%rsp), %xmm0 # xmm0 = mem[1,0]
leaq 0x60(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x20c0
vmovaps (%rsp), %xmm0
vmovhps 0x58(%rsp), %xmm0, %xmm0 # xmm0 = xmm0[0,1],mem[0,1]
vmovaps %xmm0, (%rsp)
vmovups 0x20(%rsp), %ymm0
vextractf128 $0x1, %ymm0, %xmm0
vmovaps %xmm0, 0x10(%rsp)
leaq 0x70(%rsp), %rdi
movq %r14, %rsi
vzeroupper
callq 0x20c0
vmovsd 0x68(%rsp), %xmm0
vmovaps %xmm0, 0x20(%rsp)
vpermilpd $0x1, 0x10(%rsp), %xmm0 # xmm0 = mem[1,0]
movq %r15, %rdi
movq %r12, %rsi
callq 0x20c0
vmovaps 0x20(%rsp), %xmm0
vmovhps 0x78(%rsp), %xmm0, %xmm0 # xmm0 = xmm0[0,1],mem[0,1]
vmovups %xmm0, 0x10(%rbx)
vmovaps (%rsp), %xmm0
vmovups %xmm0, (%rbx)
addq $0x40, %rbx
vmovsd 0x50(%rsp), %xmm0
vmovhpd 0x60(%rsp), %xmm0, %xmm0 # xmm0 = xmm0[0],mem[0]
vmovsd 0x70(%rsp), %xmm1
vmovhps 0x80(%rsp), %xmm1, %xmm1 # xmm1 = xmm1[0,1],mem[0,1]
vmovups %xmm1, 0x30(%rbp)
vmovupd %xmm0, 0x20(%rbp)
leaq 0x4(%r13), %rax
cmpq $0x1fc, %r13            # imm = 0x1FC
movq %rax, %r13
jb 0x4689
movl $0x200, %eax            # imm = 0x200
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rcx
movl $0x800, %eax            # imm = 0x800
xorl %edx, %edx
movq %rcx, 0x10(%rsp)
divq %rcx
movq %rax, %r14
shrq %rcx
movq %rcx, 0x20(%rsp)
leal (,%rax,4), %eax
movl %eax, (%rsp)
xorl %ebp, %ebp
xorl %r12d, %r12d
movl %ebp, %r13d
xorl %r15d, %r15d
movl %r13d, %eax
andl $0x7ff, %eax            # imm = 0x7FF
cmpl $0x600, %eax            # imm = 0x600
jae 0x47eb
cmpl $0x400, %eax            # imm = 0x400
jae 0x4805
cmpl $0x200, %eax            # imm = 0x200
jae 0x4810
vcvtsi2sd %eax, %xmm2, %xmm0
jmp 0x47f6
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm2, %xmm0
vmulsd 0x38aa(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2210
jmp 0x4832
addl $0xfffffc00, %eax       # imm = 0xFFFFFC00
vcvtsi2sd %eax, %xmm2, %xmm0
jmp 0x481b
movl $0x400, %ecx            # imm = 0x400
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm2, %xmm0
vmulsd 0x3885(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2210
vxorpd 0x37fe(%rip){1to2}, %xmm0, %xmm0 # 0x8030
vmovsd %xmm0, (%rbx,%r15)
addq $0x8, %r15
addl %r14d, %r13d
cmpq $0x20, %r15
jne 0x47c8
addq %r15, %rbx
movl $0x4, %r15d
movl %ebp, %r13d
movl %r13d, %eax
andl $0x7ff, %eax            # imm = 0x7FF
cmpl $0x600, %eax            # imm = 0x600
jae 0x4874
cmpl $0x400, %eax            # imm = 0x400
jae 0x4881
cmpl $0x200, %eax            # imm = 0x200
jae 0x4894
vcvtsi2sd %eax, %xmm2, %xmm0
jmp 0x489f
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm2, %xmm0
jmp 0x488a
addl $0xfffffc00, %eax       # imm = 0xFFFFFC00
vcvtsi2sd %eax, %xmm2, %xmm0
vmulsd 0x381e(%rip), %xmm0, %xmm0 # 0x80b0
jmp 0x48a7
movl $0x400, %ecx            # imm = 0x400
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm2, %xmm0
vmulsd 0x3801(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2050
vmovsd %xmm0, (%rbx)
addq $0x8, %rbx
addl %r14d, %r13d
decq %r15
jne 0x4851
addq $0x4, %r12
addl (%rsp), %ebp
cmpq 0x20(%rsp), %r12
jb 0x47c2
cmpq $0xf, 0x10(%rsp)
ja 0x4794
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq