// File: /workspace/github_cpp_makefile_star2_O1/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 0x8b5c(%rip), %rdi      # 0xaff0
leaq 0x60e5(%rip), %rsi      # 0x8580
movl $0x18, %edx
callq 0x21a0
leaq 0x850(%rsp), %rbx
movq %rbx, %rdi
callq 0x2d20
leaq 0x2f90(%rsp), %rdi
movq %rbx, %rsi
callq 0x2d9a
leaq 0x3760(%rsp), %rcx
leaq 0x60(%rsp), %rdi
leaq 0x850(%rsp), %rsi
leaq 0x2f90(%rsp), %rdx
callq 0x3a68
leaq 0x468(%rsp), %rdi
leaq 0x850(%rsp), %rsi
callq 0x2c8e
leaq 0x80(%rsp), %rdi
leaq 0x850(%rsp), %rsi
callq 0x2c8e
vxorps %xmm0, %xmm0, %xmm0
leaq 0x40(%rsp), %rax
vmovaps %xmm0, (%rax)
xorl %ebx, %ebx
movq %rbx, 0x10(%rax)
movq %rbx, 0x30(%rsp)
vmovaps %xmm0, 0x20(%rsp)
movq %rbx, 0x10(%rsp)
vmovaps %xmm0, (%rsp)
leaq 0x1bd8(%rsp), %r14
leaq 0x850(%rsp), %r15
leaq 0x2f90(%rsp), %r12
leaq 0x25b4(%rsp), %r13
movzbl 0x468(%rsp,%rbx), %ecx
shll $0x1e, %ecx
addl $0xe0000000, %ecx       # imm = 0xE0000000
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
vmovsd 0x5a8d(%rip), %xmm0     # 0x8008
callq 0x3f72
movl $0x7d4, %edx            # imm = 0x7D4
movq %r13, %rdi
movq %r14, %rsi
callq 0x2140
movq 0x48(%rsp), %rbp
cmpq 0x50(%rsp), %rbp
je 0x25ba
movl $0x7d4, %edx            # imm = 0x7D4
movq %rbp, %rdi
movq %r13, %rsi
callq 0x2140
addq $0x7d4, %rbp            # imm = 0x7D4
movq %rbp, 0x48(%rsp)
jmp 0x25ca
leaq 0x40(%rsp), %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x58be
incq %rbx
cmpq $0x3e8, %rbx            # imm = 0x3E8
jne 0x2559
xorl %r13d, %r13d
leaq 0x1bd8(%rsp), %rbx
leaq 0x850(%rsp), %r14
leaq 0x2f90(%rsp), %r15
leaq 0x25b4(%rsp), %r12
movzbl 0x80(%rsp,%r13), %ecx
shll $0x1e, %ecx
addl $0xe0000000, %ecx       # imm = 0xE0000000
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
vmovsd 0x59ec(%rip), %xmm0     # 0x8008
callq 0x3f72
movl $0x7d4, %edx            # imm = 0x7D4
movq %r12, %rdi
movq %rbx, %rsi
callq 0x2140
movq 0x28(%rsp), %rbp
cmpq 0x30(%rsp), %rbp
je 0x265b
movl $0x7d4, %edx            # imm = 0x7D4
movq %rbp, %rdi
movq %r12, %rsi
callq 0x2140
addq $0x7d4, %rbp            # imm = 0x7D4
movq %rbp, 0x28(%rsp)
jmp 0x266b
leaq 0x20(%rsp), %rdi
movq %rbp, %rsi
movq %r12, %rdx
callq 0x58be
incq %r13
cmpq $0x3e8, %r13            # imm = 0x3E8
jne 0x25f9
movq %rsp, %rdi
movl $0x3e8, %esi            # imm = 0x3E8
callq 0x2e8a
callq 0x2040
movq %rax, %rbx
leaq 0x68(%rsp), %r14
xorl %ebp, %ebp
leaq 0x1bd8(%rsp), %r15
movq %rsp, %r12
movq 0x40(%rsp), %rsi
addq %rbp, %rsi
movq 0x20(%rsp), %rdx
addq %rbp, %rdx
movq 0x60(%rsp), %r8
movq %r15, %rdi
movq %r14, %rcx
callq 0x5a60
movq 0x8(%rsp), %r13
cmpq 0x10(%rsp), %r13
je 0x26e8
movl $0x7d4, %edx            # imm = 0x7D4
movq %r13, %rdi
movq %r15, %rsi
callq 0x2140
addq $0x7d4, %r13            # imm = 0x7D4
movq %r13, 0x8(%rsp)
jmp 0x26f6
movq %r12, %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x58be
addq $0x7d4, %rbp            # imm = 0x7D4
cmpq $0x1e9420, %rbp         # imm = 0x1E9420
jne 0x269e
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 0x88b3(%rip), %rdi      # 0xaff0
callq 0x20d0
movq %rax, %rbx
leaq 0x5e66(%rip), %rsi      # 0x85b2
movl $0x9, %edx
movq %rax, %rdi
callq 0x21a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2170
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20e0
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x2796
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x27ad
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x27c4
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x27db
movq 0x78(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x27ef
movl $0x2ef8000, %esi        # imm = 0x2EF8000
callq 0x2190
leaq 0x850(%rsp), %rdi
callq 0x2160
movq 0x87ed(%rip), %rdi      # 0xaff0
leaq 0x5d8f(%rip), %rsi      # 0x8599
movl $0x18, %edx
callq 0x21a0
leaq 0x850(%rsp), %rbx
movq %rbx, %rdi
callq 0x2d20
leaq 0x2f90(%rsp), %rdi
movq %rbx, %rsi
callq 0x646e
leaq 0x3968(%rsp), %rcx
leaq 0x60(%rsp), %rdi
leaq 0x850(%rsp), %rsi
leaq 0x2f90(%rsp), %rdx
callq 0x667e
leaq 0x468(%rsp), %rdi
leaq 0x850(%rsp), %rsi
callq 0x2c8e
leaq 0x80(%rsp), %rdi
leaq 0x850(%rsp), %rsi
callq 0x2c8e
vxorps %xmm0, %xmm0, %xmm0
leaq 0x40(%rsp), %rax
vmovaps %xmm0, (%rax)
xorl %ebx, %ebx
movq %rbx, 0x10(%rax)
movq %rbx, 0x30(%rsp)
vmovaps %xmm0, 0x20(%rsp)
movq %rbx, 0x10(%rsp)
vmovaps %xmm0, (%rsp)
leaq 0x1bd8(%rsp), %r14
leaq 0x850(%rsp), %r15
leaq 0x2f90(%rsp), %r12
leaq 0x25b4(%rsp), %r13
movzbl 0x468(%rsp,%rbx), %ecx
shll $0x1e, %ecx
addl $0xe0000000, %ecx       # imm = 0xE0000000
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
vmovsd 0x5726(%rip), %xmm0     # 0x8010
callq 0x6be2
movl $0x9dc, %edx            # imm = 0x9DC
movq %r13, %rdi
movq %r14, %rsi
callq 0x2140
movq 0x48(%rsp), %rbp
cmpq 0x50(%rsp), %rbp
je 0x2929
movl $0x9dc, %edx            # imm = 0x9DC
movq %rbp, %rdi
movq %r13, %rsi
callq 0x2140
addq $0x9dc, %rbp            # imm = 0x9DC
movq %rbp, 0x48(%rsp)
jmp 0x2939
leaq 0x40(%rsp), %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x72fe
incq %rbx
cmpq $0x3e8, %rbx            # imm = 0x3E8
jne 0x28c8
xorl %r13d, %r13d
leaq 0x1bd8(%rsp), %rbx
leaq 0x850(%rsp), %r14
leaq 0x2f90(%rsp), %r15
leaq 0x25b4(%rsp), %r12
movzbl 0x80(%rsp,%r13), %ecx
shll $0x1e, %ecx
addl $0xe0000000, %ecx       # imm = 0xE0000000
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
vmovsd 0x5685(%rip), %xmm0     # 0x8010
callq 0x6be2
movl $0x9dc, %edx            # imm = 0x9DC
movq %r12, %rdi
movq %rbx, %rsi
callq 0x2140
movq 0x28(%rsp), %rbp
cmpq 0x30(%rsp), %rbp
je 0x29ca
movl $0x9dc, %edx            # imm = 0x9DC
movq %rbp, %rdi
movq %r12, %rsi
callq 0x2140
addq $0x9dc, %rbp            # imm = 0x9DC
movq %rbp, 0x28(%rsp)
jmp 0x29da
leaq 0x20(%rsp), %rdi
movq %rbp, %rsi
movq %r12, %rdx
callq 0x72fe
incq %r13
cmpq $0x3e8, %r13            # imm = 0x3E8
jne 0x2968
movq %rsp, %rdi
movl $0x3e8, %esi            # imm = 0x3E8
callq 0x655a
callq 0x2040
movq %rax, %rbx
leaq 0x68(%rsp), %r14
xorl %ebp, %ebp
leaq 0x1bd8(%rsp), %r15
movq %rsp, %r12
movq 0x40(%rsp), %rsi
addq %rbp, %rsi
movq 0x20(%rsp), %rdx
addq %rbp, %rdx
movq 0x60(%rsp), %r8
movq %r15, %rdi
movq %r14, %rcx
callq 0x74a0
movq 0x8(%rsp), %r13
cmpq 0x10(%rsp), %r13
je 0x2a57
movl $0x9dc, %edx            # imm = 0x9DC
movq %r13, %rdi
movq %r15, %rsi
callq 0x2140
addq $0x9dc, %r13            # imm = 0x9DC
movq %r13, 0x8(%rsp)
jmp 0x2a65
movq %r12, %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x72fe
addq $0x9dc, %rbp            # imm = 0x9DC
cmpq $0x268360, %rbp         # imm = 0x268360
jne 0x2a0d
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 0x8544(%rip), %rdi      # 0xaff0
callq 0x20d0
movq %rax, %rbx
leaq 0x5af7(%rip), %rsi      # 0x85b2
movl $0x9, %edx
movq %rax, %rdi
callq 0x21a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2170
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20e0
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x2b05
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x2b1c
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x2b33
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x2b4a
movq 0x78(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x2b5e
movl $0x3b28000, %esi        # imm = 0x3B28000
callq 0x2190
leaq 0x850(%rsp), %rdi
callq 0x2160
xorl %eax, %eax
addq $0x4968, %rsp           # imm = 0x4968
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2c86
jmp 0x2bba
jmp 0x2b88
movq %rax, %rbx
jmp 0x2c01
jmp 0x2b8f
movq %rax, %rbx
jmp 0x2c0b
jmp 0x2c86
jmp 0x2c1e
jmp 0x2ba0
movq %rax, %rbx
jmp 0x2c65
jmp 0x2baa
movq %rax, %rbx
jmp 0x2c6f
jmp 0x2bba
jmp 0x2c1e
jmp 0x2bba
jmp 0x2bba
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x2bd3
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x2bea
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x2c01
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
leaq 0x60(%rsp), %rdi
callq 0x664a
leaq 0x850(%rsp), %rdi
callq 0x2160
jmp 0x2c7c
jmp 0x2c1e
jmp 0x2c1e
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x2c37
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x2c4e
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x2c65
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
leaq 0x60(%rsp), %rdi
callq 0x2f7a
leaq 0x850(%rsp), %rdi
callq 0x2160
movq %rbx, %rdi
callq 0x21e0
jmp 0x2c86
movq %rax, %rdi
callq 0x303e