// File: /workspace/github_cpp_makefile_star2_O3/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 $0x28, %rsp
movl $0x4, %eax
movl $0xfffff800, %ebp       # imm = 0xFFFFF800
movq %rdi, %rbx
movq %rdi, %r14
leaq (%rax,%rax), %rcx
movq %rax, 0x8(%rsp)
movw $0x800, %ax             # imm = 0x800
xorl %edx, %edx
xorl %r12d, %r12d
movq %rcx, 0x20(%rsp)
divw %cx
movzwl %ax, %r13d
movl %r13d, %eax
shll $0x2, %eax
movq %rax, 0x18(%rsp)
xorl %eax, %eax
xorl %r15d, %r15d
movq %rax, (%rsp)
movq %r12, 0x10(%rsp)
movl $0x7ff, %eax            # imm = 0x7FF
movl %r12d, %ecx
negl %ecx
subl %r12d, %eax
testl %ecx, %ecx
movl %ecx, %edx
cmovnsl %ecx, %eax
andl %ebp, %eax
subl %eax, %edx
negl %eax
leal 0x800(%rcx,%rax), %eax
cmpl %ebp, %edx
cmovbl %edx, %eax
cmpl $0x600, %eax            # imm = 0x600
jae 0x4486
cmpl $0x400, %eax            # imm = 0x400
jae 0x44a0
cmpl $0x200, %eax            # imm = 0x200
jae 0x44ab
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x4491
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x3c0f(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2200
jmp 0x44cd
addl $0xfffffc00, %eax       # imm = 0xFFFFFC00
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x44b6
movl $0x400, %ecx            # imm = 0x400
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x3bea(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2200
vxorpd 0x3b63(%rip){1to2}, %xmm0, %xmm0 # 0x8030
vmovsd %xmm0, (%r14,%r15)
addq $0x8, %r15
addq %r13, %r12
cmpq $0x20, %r15
jne 0x4445
movq 0x10(%rsp), %r12
addq %r15, %r14
movl $0x4, %r15d
movl $0x7ff, %eax            # imm = 0x7FF
movl %r12d, %ecx
negl %ecx
subl %r12d, %eax
testl %ecx, %ecx
movl %ecx, %edx
cmovnsl %ecx, %eax
andl %ebp, %eax
subl %eax, %edx
negl %eax
leal 0x800(%rcx,%rax), %eax
cmpl %ebp, %edx
cmovbl %edx, %eax
cmpl $0x600, %eax            # imm = 0x600
jae 0x4533
cmpl $0x400, %eax            # imm = 0x400
jae 0x4540
cmpl $0x200, %eax            # imm = 0x200
jae 0x4553
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x455e
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
jmp 0x4549
addl $0xfffffc00, %eax       # imm = 0xFFFFFC00
vcvtsi2sd %eax, %xmm1, %xmm0
vmulsd 0x3b5f(%rip), %xmm0, %xmm0 # 0x80b0
jmp 0x4566
movl $0x400, %ecx            # imm = 0x400
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x3b42(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2050
vmovsd %xmm0, (%r14)
addq $0x8, %r14
addq %r13, %r12
decq %r15
jne 0x44f2
movq (%rsp), %rax
movq 0x10(%rsp), %r12
addq 0x18(%rsp), %r12
addq $0x4, %rax
cmpq 0x8(%rsp), %rax
jb 0x4439
cmpq $0x100, 0x8(%rsp)       # imm = 0x100
movq 0x20(%rsp), %rax
jb 0x440e
movl $0x800, %ebp            # imm = 0x800
xorl %r15d, %r15d
xorl %r12d, %r12d
leal (%r15,%r12), %eax
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
negl %eax
cmpl %ebp, %ecx
cmovbl %ecx, %eax
cmpl $0x600, %eax            # imm = 0x600
jge 0x45e9
cmpl $0x400, %eax            # imm = 0x400
jge 0x4603
cmpl $0x200, %eax            # imm = 0x200
jge 0x460e
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x45f4
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x3aac(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2200
jmp 0x4630
addl $0xfffffc00, %eax       # imm = 0xFFFFFC00
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x4619
movl $0x400, %ecx            # imm = 0x400
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x3a87(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2200
vxorpd 0x3a00(%rip){1to2}, %xmm0, %xmm0 # 0x8030
vmovsd %xmm0, (%r14)
addq $0x8, %r14
incq %r12
cmpq $0x4, %r12
jne 0x45bc
xorl %r12d, %r12d
leal (%r15,%r12), %eax
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
negl %eax
cmpl %ebp, %ecx
cmovbl %ecx, %eax
cmpl $0x600, %eax            # imm = 0x600
jge 0x4676
cmpl $0x400, %eax            # imm = 0x400
jge 0x4683
cmpl $0x200, %eax            # imm = 0x200
jge 0x4696
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x46a1
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
jmp 0x468c
addl $0xfffffc00, %eax       # imm = 0xFFFFFC00
vcvtsi2sd %eax, %xmm1, %xmm0
vmulsd 0x3a1c(%rip), %xmm0, %xmm0 # 0x80b0
jmp 0x46a9
movl $0x400, %ecx            # imm = 0x400
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x39ff(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2050
vmovsd %xmm0, (%r14)
addq $0x8, %r14
incq %r12
cmpq $0x4, %r12
jne 0x4649
leaq 0x4(%r15), %rax
cmpq $0x1fc, %r15            # imm = 0x1FC
movq %rax, %r15
jb 0x45b9
addq $0x4000, %rbx           # imm = 0x4000
xorl %r14d, %r14d
xorl %r15d, %r15d
xorl %r12d, %r12d
leal (%r14,%r12), %eax
andl $0xfffff7ff, %eax       # imm = 0xFFFFF7FF
cmpl $0x600, %eax            # imm = 0x600
jge 0x4708
cmpl $0x400, %eax            # imm = 0x400
jge 0x4722
cmpl $0x200, %eax            # imm = 0x200
jge 0x472d
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x4713
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x398d(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2200
jmp 0x474f
addl $0xfffffc00, %eax       # imm = 0xFFFFFC00
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x4738
movl $0x400, %ecx            # imm = 0x400
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x3968(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2200
vxorpd 0x38e1(%rip){1to2}, %xmm0, %xmm0 # 0x8030
vmovsd %xmm0, (%rbx,%r12,8)
incq %r12
addq $-0x8, %r15
cmpq $0x4, %r12
jne 0x46e4
subq %r15, %rbx
xorl %r15d, %r15d
leal (%r14,%r15), %eax
andl $0xfffff7ff, %eax       # imm = 0xFFFFF7FF
cmpl $0x600, %eax            # imm = 0x600
jge 0x478c
cmpl $0x400, %eax            # imm = 0x400
jge 0x4799
cmpl $0x200, %eax            # imm = 0x200
jge 0x47ac
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x47b7
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
jmp 0x47a2
addl $0xfffffc00, %eax       # imm = 0xFFFFFC00
vcvtsi2sd %eax, %xmm1, %xmm0
vmulsd 0x3906(%rip), %xmm0, %xmm0 # 0x80b0
jmp 0x47bf
movl $0x400, %ecx            # imm = 0x400
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x38e9(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2050
vmovsd %xmm0, (%rbx)
addq $0x8, %rbx
incq %r15
cmpq $0x4, %r15
jne 0x4768
leaq 0x4(%r14), %rax
cmpq $0x1fc, %r14            # imm = 0x1FC
movq %rax, %r14
jb 0x46de
movl $0x200, %eax            # imm = 0x200
movl $0xfffff800, %ebp       # imm = 0xFFFFF800
movq %rax, (%rsp)
movq (%rsp), %rcx
movl $0x800, %eax            # imm = 0x800
xorl %edx, %edx
xorl %r15d, %r15d
movq %rcx, 0x18(%rsp)
divq %rcx
shrq %rcx
movq %rcx, (%rsp)
movq %rax, %r14
leal (,%rax,4), %eax
movq %rax, 0x8(%rsp)
xorl %eax, %eax
movq %rax, 0x10(%rsp)
movq %r15, %r12
xorl %r13d, %r13d
leal 0x7ff(%r12), %eax
testl %r12d, %r12d
movl %r12d, %ecx
cmovnsl %r12d, %eax
andl %ebp, %eax
subl %eax, %ecx
negl %eax
leal 0x800(%r12,%rax), %eax
cmpl %ebp, %ecx
cmovbl %ecx, %eax
cmpl $0x600, %eax            # imm = 0x600
jae 0x4870
cmpl $0x400, %eax            # imm = 0x400
jae 0x488a
cmpl $0x200, %eax            # imm = 0x200
jae 0x4895
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x487b
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x3825(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2200
jmp 0x48b7
addl $0xfffffc00, %eax       # imm = 0xFFFFFC00
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x48a0
movl $0x400, %ecx            # imm = 0x400
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x3800(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2200
vxorpd 0x3779(%rip){1to2}, %xmm0, %xmm0 # 0x8030
vmovsd %xmm0, (%rbx,%r13)
addq $0x8, %r13
addq %r14, %r12
cmpq $0x20, %r13
jne 0x4830
addq %r13, %rbx
movl $0x4, %r13d
movq %r15, %r12
leal 0x7ff(%r12), %eax
testl %r12d, %r12d
movl %r12d, %ecx
cmovnsl %r12d, %eax
andl %ebp, %eax
subl %eax, %ecx
negl %eax
leal 0x800(%r12,%rax), %eax
cmpl %ebp, %ecx
cmovbl %ecx, %eax
cmpl $0x600, %eax            # imm = 0x600
jae 0x491a
cmpl $0x400, %eax            # imm = 0x400
jae 0x4927
cmpl $0x200, %eax            # imm = 0x200
jae 0x493a
vcvtsi2sd %eax, %xmm1, %xmm0
jmp 0x4945
movl $0x800, %ecx            # imm = 0x800
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
jmp 0x4930
addl $0xfffffc00, %eax       # imm = 0xFFFFFC00
vcvtsi2sd %eax, %xmm1, %xmm0
vmulsd 0x3778(%rip), %xmm0, %xmm0 # 0x80b0
jmp 0x494d
movl $0x400, %ecx            # imm = 0x400
subl %eax, %ecx
vcvtsi2sd %ecx, %xmm1, %xmm0
vmulsd 0x375b(%rip), %xmm0, %xmm0 # 0x80a8
callq 0x2050
vmovsd %xmm0, (%rbx)
addq $0x8, %rbx
addq %r14, %r12
decq %r13
jne 0x48da
movq 0x10(%rsp), %rax
addq 0x8(%rsp), %r15
addq $0x4, %rax
cmpq (%rsp), %rax
jb 0x4825
cmpq $0xf, 0x18(%rsp)
ja 0x47f7
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop