// File: /workspace/github_cpp_makefile_star2_O3/ushitora-anqou[P]aqtfhe2/main.cpp
// Function: main
int main()
{
#ifndef NDEBUG
    test_nd_array();
    test_tlwe_lvl0();
    test_trlwe_lvl1();
    test_trgswfft_external_product();
    test_bootstrapping();
    test_nand();
#else
    std::cerr << "Old parameter [CGGI16]:\t";
    test_performance<aqtfhe2::params::CGGI16>();
    std::cerr << "New parameter [CGGI19]:\t";
    test_performance<aqtfhe2::params::CGGI19>();
#endif

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x4968, %rsp           # imm = 0x4968
movq 0x8b6c(%rip), %rdi      # 0xaff0
leaq 0x60f5(%rip), %rsi      # 0x8580
movl $0x18, %edx
callq 0x2190
leaq 0x850(%rsp), %rbx
movq %rbx, %rdi
callq 0x2d0c
leaq 0x2f90(%rsp), %rdi
movq %rbx, %rsi
callq 0x2d86
leaq 0x3760(%rsp), %rcx
leaq 0x60(%rsp), %rdi
leaq 0x850(%rsp), %rsi
leaq 0x2f90(%rsp), %rdx
callq 0x3a4a
leaq 0x468(%rsp), %rdi
leaq 0x850(%rsp), %rsi
callq 0x2c7e
leaq 0x80(%rsp), %rdi
leaq 0x850(%rsp), %rsi
callq 0x2c7e
vxorps %xmm0, %xmm0, %xmm0
leaq 0x40(%rsp), %rax
leaq 0x1bd8(%rsp), %r14
leaq 0x850(%rsp), %r15
leaq 0x2f90(%rsp), %r12
leaq 0x25b4(%rsp), %r13
xorl %ebx, %ebx
movq %rbx, 0x30(%rsp)
movq %rbx, 0x10(%rsp)
vmovaps %xmm0, (%rax)
movq %rbx, 0x10(%rax)
vmovaps %xmm0, 0x20(%rsp)
vmovaps %xmm0, (%rsp)
movzbl 0x468(%rsp,%rbx), %ecx
shll $0x1e, %ecx
addl $0xe0000000, %ecx       # imm = 0xE0000000
vmovsd 0x5aa6(%rip), %xmm0     # 0x8008
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x3f6a
movl $0x7d4, %edx            # imm = 0x7D4
movq %r13, %rdi
movq %r14, %rsi
callq 0x2130
movq 0x48(%rsp), %rbp
cmpq 0x50(%rsp), %rbp
je 0x25aa
movl $0x7d4, %edx            # imm = 0x7D4
movq %rbp, %rdi
movq %r13, %rsi
callq 0x2130
addq $0x7d4, %rbp            # imm = 0x7D4
movq %rbp, 0x48(%rsp)
jmp 0x25ba
leaq 0x40(%rsp), %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x594e
incq %rbx
cmpq $0x3e8, %rbx            # imm = 0x3E8
jne 0x2549
leaq 0x1bd8(%rsp), %rbx
leaq 0x850(%rsp), %r14
leaq 0x2f90(%rsp), %r15
leaq 0x25b4(%rsp), %r12
xorl %r13d, %r13d
movzbl 0x80(%rsp,%r13), %ecx
shll $0x1e, %ecx
addl $0xe0000000, %ecx       # imm = 0xE0000000
vmovsd 0x5a05(%rip), %xmm0     # 0x8008
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x3f6a
movl $0x7d4, %edx            # imm = 0x7D4
movq %r12, %rdi
movq %rbx, %rsi
callq 0x2130
movq 0x28(%rsp), %rbp
cmpq 0x30(%rsp), %rbp
je 0x264b
movl $0x7d4, %edx            # imm = 0x7D4
movq %rbp, %rdi
movq %r12, %rsi
callq 0x2130
addq $0x7d4, %rbp            # imm = 0x7D4
movq %rbp, 0x28(%rsp)
jmp 0x265b
leaq 0x20(%rsp), %rdi
movq %rbp, %rsi
movq %r12, %rdx
callq 0x594e
incq %r13
cmpq $0x3e8, %r13            # imm = 0x3E8
jne 0x25e9
movl $0x3e8, %esi            # imm = 0x3E8
movq %rsp, %rdi
callq 0x2e76
callq 0x2040
leaq 0x68(%rsp), %r14
leaq 0x1bd8(%rsp), %r15
movq %rax, %rbx
xorl %ebp, %ebp
movq %rsp, %r12
movq 0x20(%rsp), %rdx
movq 0x40(%rsp), %rsi
movq 0x60(%rsp), %r8
addq %rbp, %rdx
addq %rbp, %rsi
movq %r15, %rdi
movq %r14, %rcx
callq 0x5af0
movq 0x8(%rsp), %r13
cmpq 0x10(%rsp), %r13
je 0x26d8
movl $0x7d4, %edx            # imm = 0x7D4
movq %r13, %rdi
movq %r15, %rsi
callq 0x2130
addq $0x7d4, %r13            # imm = 0x7D4
movq %r13, 0x8(%rsp)
jmp 0x26e6
movq %r12, %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x594e
addq $0x7d4, %rbp            # imm = 0x7D4
cmpq $0x1e9420, %rbp         # imm = 0x1E9420
jne 0x268e
callq 0x2040
subq %rbx, %rax
movabsq $0x20c49ba5e353f7cf, %rcx # imm = 0x20C49BA5E353F7CF
imulq %rcx
movq %rdx, %rax
shrq $0x3f, %rax
sarq $0x7, %rdx
addq %rax, %rdx
shrq $0x3, %rdx
mulxq %rcx, %rsi, %rsi
shrq $0x4, %rsi
movq 0x88c3(%rip), %rdi      # 0xaff0
callq 0x20c0
leaq 0x5e79(%rip), %rsi      # 0x85b2
movl $0x9, %edx
movq %rax, %rdi
movq %rax, %rbx
callq 0x2190
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x2786
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x279d
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x27b4
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x27cb
movq 0x78(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x27df
movl $0x2ef8000, %esi        # imm = 0x2EF8000
callq 0x2180
leaq 0x850(%rsp), %rdi
callq 0x2150
movq 0x87fd(%rip), %rdi      # 0xaff0
leaq 0x5d9f(%rip), %rsi      # 0x8599
movl $0x18, %edx
callq 0x2190
leaq 0x850(%rsp), %rbx
movq %rbx, %rdi
callq 0x2d0c
leaq 0x2f90(%rsp), %rdi
movq %rbx, %rsi
callq 0x64e4
leaq 0x3968(%rsp), %rcx
leaq 0x60(%rsp), %rdi
leaq 0x850(%rsp), %rsi
leaq 0x2f90(%rsp), %rdx
callq 0x6700
leaq 0x468(%rsp), %rdi
leaq 0x850(%rsp), %rsi
callq 0x2c7e
leaq 0x80(%rsp), %rdi
leaq 0x850(%rsp), %rsi
callq 0x2c7e
vxorps %xmm0, %xmm0, %xmm0
leaq 0x40(%rsp), %rax
leaq 0x1bd8(%rsp), %r14
leaq 0x850(%rsp), %r15
leaq 0x2f90(%rsp), %r12
leaq 0x25b4(%rsp), %r13
xorl %ebx, %ebx
movq %rbx, 0x30(%rsp)
movq %rbx, 0x10(%rsp)
vmovaps %xmm0, (%rax)
movq %rbx, 0x10(%rax)
vmovaps %xmm0, 0x20(%rsp)
vmovaps %xmm0, (%rsp)
movzbl 0x468(%rsp,%rbx), %ecx
shll $0x1e, %ecx
addl $0xe0000000, %ecx       # imm = 0xE0000000
vmovsd 0x573f(%rip), %xmm0     # 0x8010
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x6c6e
movl $0x9dc, %edx            # imm = 0x9DC
movq %r13, %rdi
movq %r14, %rsi
callq 0x2130
movq 0x48(%rsp), %rbp
cmpq 0x50(%rsp), %rbp
je 0x2919
movl $0x9dc, %edx            # imm = 0x9DC
movq %rbp, %rdi
movq %r13, %rsi
callq 0x2130
addq $0x9dc, %rbp            # imm = 0x9DC
movq %rbp, 0x48(%rsp)
jmp 0x2929
leaq 0x40(%rsp), %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x7394
incq %rbx
cmpq $0x3e8, %rbx            # imm = 0x3E8
jne 0x28b8
leaq 0x1bd8(%rsp), %rbx
leaq 0x850(%rsp), %r14
leaq 0x2f90(%rsp), %r15
leaq 0x25b4(%rsp), %r12
xorl %r13d, %r13d
movzbl 0x80(%rsp,%r13), %ecx
shll $0x1e, %ecx
addl $0xe0000000, %ecx       # imm = 0xE0000000
vmovsd 0x569e(%rip), %xmm0     # 0x8010
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x6c6e
movl $0x9dc, %edx            # imm = 0x9DC
movq %r12, %rdi
movq %rbx, %rsi
callq 0x2130
movq 0x28(%rsp), %rbp
cmpq 0x30(%rsp), %rbp
je 0x29ba
movl $0x9dc, %edx            # imm = 0x9DC
movq %rbp, %rdi
movq %r12, %rsi
callq 0x2130
addq $0x9dc, %rbp            # imm = 0x9DC
movq %rbp, 0x28(%rsp)
jmp 0x29ca
leaq 0x20(%rsp), %rdi
movq %rbp, %rsi
movq %r12, %rdx
callq 0x7394
incq %r13
cmpq $0x3e8, %r13            # imm = 0x3E8
jne 0x2958
movl $0x3e8, %esi            # imm = 0x3E8
movq %rsp, %rdi
callq 0x65d0
callq 0x2040
leaq 0x68(%rsp), %r14
leaq 0x1bd8(%rsp), %r15
movq %rax, %rbx
xorl %ebp, %ebp
movq %rsp, %r12
movq 0x20(%rsp), %rdx
movq 0x40(%rsp), %rsi
movq 0x60(%rsp), %r8
addq %rbp, %rdx
addq %rbp, %rsi
movq %r15, %rdi
movq %r14, %rcx
callq 0x7536
movq 0x8(%rsp), %r13
cmpq 0x10(%rsp), %r13
je 0x2a47
movl $0x9dc, %edx            # imm = 0x9DC
movq %r13, %rdi
movq %r15, %rsi
callq 0x2130
addq $0x9dc, %r13            # imm = 0x9DC
movq %r13, 0x8(%rsp)
jmp 0x2a55
movq %r12, %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x7394
addq $0x9dc, %rbp            # imm = 0x9DC
cmpq $0x268360, %rbp         # imm = 0x268360
jne 0x29fd
callq 0x2040
subq %rbx, %rax
movabsq $0x20c49ba5e353f7cf, %rcx # imm = 0x20C49BA5E353F7CF
imulq %rcx
movq %rdx, %rax
shrq $0x3f, %rax
sarq $0x7, %rdx
addq %rax, %rdx
shrq $0x3, %rdx
mulxq %rcx, %rsi, %rsi
shrq $0x4, %rsi
movq 0x8554(%rip), %rdi      # 0xaff0
callq 0x20c0
leaq 0x5b0a(%rip), %rsi      # 0x85b2
movl $0x9, %edx
movq %rax, %rdi
movq %rax, %rbx
callq 0x2190
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x2af5
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x2b0c
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x2b23
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x2b3a
movq 0x78(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x2b4e
movl $0x3b28000, %esi        # imm = 0x3B28000
callq 0x2180
leaq 0x850(%rsp), %rdi
callq 0x2150
xorl %eax, %eax
addq $0x4968, %rsp           # imm = 0x4968
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2c76
jmp 0x2baa
jmp 0x2b78
movq %rax, %rbx
jmp 0x2bf1
jmp 0x2b7f
movq %rax, %rbx
jmp 0x2bfb
jmp 0x2c76
jmp 0x2c0e
jmp 0x2b90
movq %rax, %rbx
jmp 0x2c55
jmp 0x2b9a
movq %rax, %rbx
jmp 0x2c5f
jmp 0x2baa
jmp 0x2c0e
jmp 0x2baa
jmp 0x2baa
movq (%rsp), %rdi
movq %rax, %rbx
testq %rdi, %rdi
je 0x2bc3
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x2bda
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x2bf1
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
leaq 0x60(%rsp), %rdi
callq 0x66cc
leaq 0x850(%rsp), %rdi
callq 0x2150
jmp 0x2c6c
jmp 0x2c0e
jmp 0x2c0e
movq (%rsp), %rdi
movq %rax, %rbx
testq %rdi, %rdi
je 0x2c27
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x2c3e
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x2c55
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
leaq 0x60(%rsp), %rdi
callq 0x2f72
leaq 0x850(%rsp), %rdi
callq 0x2150
movq %rbx, %rdi
callq 0x21d0
jmp 0x2c76
movq %rax, %rdi
callq 0x303b