// File: /workspace/github_c_makefile_star2_O1/deplinenoise[P]tundra/unittest/Test_Pow2.cpp
// Function: Pow2_Basic_Test::TestBody()
TEST(Pow2, Basic)
{
  EXPECT_EQ(0, NextPowerOfTwo(0));
  EXPECT_EQ(1, NextPowerOfTwo(1));
  EXPECT_EQ(2, NextPowerOfTwo(2));
  EXPECT_EQ(4, NextPowerOfTwo(3));
  EXPECT_EQ(4, NextPowerOfTwo(4));
  EXPECT_EQ(8, NextPowerOfTwo(5));
  EXPECT_EQ(8, NextPowerOfTwo(7));
  EXPECT_EQ(8, NextPowerOfTwo(8));
  EXPECT_EQ(128, NextPowerOfTwo(126));
  EXPECT_EQ(65536, NextPowerOfTwo(65500));
  EXPECT_EQ(0x80000000, NextPowerOfTwo(0x78a1987a));
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x28, %rsp
leaq 0x8(%rsp), %rbx
movl $0x0, (%rbx)
xorl %edi, %edi
callq 0x41b2a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1901c(%rip), %rsi     # 0x54b08
leaq 0x1abee(%rip), %rdx     # 0x566e1
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3c516
cmpb $0x0, (%r14)
jne 0x3bb90
leaq 0x8(%rsp), %rdi
callq 0x12eee
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3bb26
movq (%rax), %r8
jmp 0x3bb2d
leaq 0x1d326(%rip), %r8      # 0x58e53
leaq 0x1ab96(%rip), %rdx     # 0x566ca
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0x8, %ecx
callq 0x10bb8
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c56
leaq 0x10(%rsp), %rdi
callq 0x10c24
cmpq $0x0, 0x8(%rsp)
je 0x3bb90
movl $0x1, %edi
callq 0x10bb4
testb %al, %al
je 0x3bb87
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3bb87
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c81c
leaq 0x8(%rsp), %rbx
movl $0x1, (%rbx)
movl $0x1, %edi
callq 0x41b2a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x18587(%rip), %rsi     # 0x54147
leaq 0x1ab2c(%rip), %rdx     # 0x566f3
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3c516
cmpb $0x0, (%r14)
jne 0x3bc64
leaq 0x8(%rsp), %rdi
callq 0x12eee
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3bbfa
movq (%rax), %r8
jmp 0x3bc01
leaq 0x1d252(%rip), %r8      # 0x58e53
leaq 0x1aac2(%rip), %rdx     # 0x566ca
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0x9, %ecx
callq 0x10bb8
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c56
leaq 0x10(%rsp), %rdi
callq 0x10c24
cmpq $0x0, 0x8(%rsp)
je 0x3bc64
movl $0x1, %edi
callq 0x10bb4
testb %al, %al
je 0x3bc5b
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3bc5b
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c81c
leaq 0x8(%rsp), %rbx
movl $0x2, (%rbx)
movl $0x2, %edi
callq 0x41b2a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1beab(%rip), %rsi     # 0x57b3f
leaq 0x1aa6a(%rip), %rdx     # 0x56705
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3c516
cmpb $0x0, (%r14)
jne 0x3bd38
leaq 0x8(%rsp), %rdi
callq 0x12eee
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3bcce
movq (%rax), %r8
jmp 0x3bcd5
leaq 0x1d17e(%rip), %r8      # 0x58e53
leaq 0x1a9ee(%rip), %rdx     # 0x566ca
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0xa, %ecx
callq 0x10bb8
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c56
leaq 0x10(%rsp), %rdi
callq 0x10c24
cmpq $0x0, 0x8(%rsp)
je 0x3bd38
movl $0x1, %edi
callq 0x10bb4
testb %al, %al
je 0x3bd2f
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3bd2f
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c81c
leaq 0x8(%rsp), %rbx
movl $0x4, (%rbx)
movl $0x3, %edi
callq 0x41b2a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1a276(%rip), %rsi     # 0x55fde
leaq 0x1a9a8(%rip), %rdx     # 0x56717
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3c516
cmpb $0x0, (%r14)
jne 0x3be0c
leaq 0x8(%rsp), %rdi
callq 0x12eee
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3bda2
movq (%rax), %r8
jmp 0x3bda9
leaq 0x1d0aa(%rip), %r8      # 0x58e53
leaq 0x1a91a(%rip), %rdx     # 0x566ca
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0xb, %ecx
callq 0x10bb8
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c56
leaq 0x10(%rsp), %rdi
callq 0x10c24
cmpq $0x0, 0x8(%rsp)
je 0x3be0c
movl $0x1, %edi
callq 0x10bb4
testb %al, %al
je 0x3be03
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3be03
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c81c
leaq 0x8(%rsp), %rbx
movl $0x4, (%rbx)
movl $0x4, %edi
callq 0x41b2a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1a1a2(%rip), %rsi     # 0x55fde
leaq 0x1a8e6(%rip), %rdx     # 0x56729
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3c516
cmpb $0x0, (%r14)
jne 0x3bee0
leaq 0x8(%rsp), %rdi
callq 0x12eee
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3be76
movq (%rax), %r8
jmp 0x3be7d
leaq 0x1cfd6(%rip), %r8      # 0x58e53
leaq 0x1a846(%rip), %rdx     # 0x566ca
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0xc, %ecx
callq 0x10bb8
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c56
leaq 0x10(%rsp), %rdi
callq 0x10c24
cmpq $0x0, 0x8(%rsp)
je 0x3bee0
movl $0x1, %edi
callq 0x10bb4
testb %al, %al
je 0x3bed7
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3bed7
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c81c
leaq 0x8(%rsp), %rbx
movl $0x8, (%rbx)
movl $0x5, %edi
callq 0x41b2a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1a863(%rip), %rsi     # 0x56773
leaq 0x1a824(%rip), %rdx     # 0x5673b
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3c516
cmpb $0x0, (%r14)
jne 0x3bfb4
leaq 0x8(%rsp), %rdi
callq 0x12eee
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3bf4a
movq (%rax), %r8
jmp 0x3bf51
leaq 0x1cf02(%rip), %r8      # 0x58e53
leaq 0x1a772(%rip), %rdx     # 0x566ca
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0xd, %ecx
callq 0x10bb8
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c56
leaq 0x10(%rsp), %rdi
callq 0x10c24
cmpq $0x0, 0x8(%rsp)
je 0x3bfb4
movl $0x1, %edi
callq 0x10bb4
testb %al, %al
je 0x3bfab
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3bfab
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c81c
leaq 0x8(%rsp), %rbx
movl $0x8, (%rbx)
movl $0x7, %edi
callq 0x41b2a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1a78f(%rip), %rsi     # 0x56773
leaq 0x1a762(%rip), %rdx     # 0x5674d
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3c516
cmpb $0x0, (%r14)
jne 0x3c088
leaq 0x8(%rsp), %rdi
callq 0x12eee
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3c01e
movq (%rax), %r8
jmp 0x3c025
leaq 0x1ce2e(%rip), %r8      # 0x58e53
leaq 0x1a69e(%rip), %rdx     # 0x566ca
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0xe, %ecx
callq 0x10bb8
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c56
leaq 0x10(%rsp), %rdi
callq 0x10c24
cmpq $0x0, 0x8(%rsp)
je 0x3c088
movl $0x1, %edi
callq 0x10bb4
testb %al, %al
je 0x3c07f
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3c07f
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c81c
leaq 0x8(%rsp), %rbx
movl $0x8, (%rbx)
movl $0x8, %edi
callq 0x41b2a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1a6bb(%rip), %rsi     # 0x56773
leaq 0x1a6a0(%rip), %rdx     # 0x5675f
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3c516
cmpb $0x0, (%r14)
jne 0x3c15c
leaq 0x8(%rsp), %rdi
callq 0x12eee
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3c0f2
movq (%rax), %r8
jmp 0x3c0f9
leaq 0x1cd5a(%rip), %r8      # 0x58e53
leaq 0x1a5ca(%rip), %rdx     # 0x566ca
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0xf, %ecx
callq 0x10bb8
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c56
leaq 0x10(%rsp), %rdi
callq 0x10c24
cmpq $0x0, 0x8(%rsp)
je 0x3c15c
movl $0x1, %edi
callq 0x10bb4
testb %al, %al
je 0x3c153
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3c153
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c81c
leaq 0x8(%rsp), %rbx
movl $0x80, (%rbx)
movl $0x7e, %edi
callq 0x41b2a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1a5e5(%rip), %rsi     # 0x56771
leaq 0x1a5e2(%rip), %rdx     # 0x56775
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3c516
cmpb $0x0, (%r14)
jne 0x3c230
leaq 0x8(%rsp), %rdi
callq 0x12eee
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3c1c6
movq (%rax), %r8
jmp 0x3c1cd
leaq 0x1cc86(%rip), %r8      # 0x58e53
leaq 0x1a4f6(%rip), %rdx     # 0x566ca
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0x10, %ecx
callq 0x10bb8
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c56
leaq 0x10(%rsp), %rdi
callq 0x10c24
cmpq $0x0, 0x8(%rsp)
je 0x3c230
movl $0x1, %edi
callq 0x10bb4
testb %al, %al
je 0x3c227
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3c227
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c81c
leaq 0x8(%rsp), %rbx
movl $0x10000, (%rbx)        # imm = 0x10000
movl $0xffdc, %edi           # imm = 0xFFDC
callq 0x41b2a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1a529(%rip), %rsi     # 0x56789
leaq 0x1a528(%rip), %rdx     # 0x5678f
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3c516
cmpb $0x0, (%r14)
jne 0x3c304
leaq 0x8(%rsp), %rdi
callq 0x12eee
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3c29a
movq (%rax), %r8
jmp 0x3c2a1
leaq 0x1cbb2(%rip), %r8      # 0x58e53
leaq 0x1a422(%rip), %rdx     # 0x566ca
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0x11, %ecx
callq 0x10bb8
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c56
leaq 0x10(%rsp), %rdi
callq 0x10c24
cmpq $0x0, 0x8(%rsp)
je 0x3c304
movl $0x1, %edi
callq 0x10bb4
testb %al, %al
je 0x3c2fb
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3c2fb
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c81c
leaq 0x8(%rsp), %rbx
movl $0x80000000, (%rbx)     # imm = 0x80000000
movl $0x78a1987a, %edi       # imm = 0x78A1987A
callq 0x41b2a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1a471(%rip), %rsi     # 0x567a5
leaq 0x1a475(%rip), %rdx     # 0x567b0
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x33cba
cmpb $0x0, (%r14)
jne 0x3c3d8
leaq 0x8(%rsp), %rdi
callq 0x12eee
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3c36e
movq (%rax), %r8
jmp 0x3c375
leaq 0x1cade(%rip), %r8      # 0x58e53
leaq 0x1a34e(%rip), %rdx     # 0x566ca
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0x12, %ecx
callq 0x10bb8
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c56
leaq 0x10(%rsp), %rdi
callq 0x10c24
cmpq $0x0, 0x8(%rsp)
je 0x3c3d8
movl $0x1, %edi
callq 0x10bb4
testb %al, %al
je 0x3c3cf
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3c3cf
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c81c
addq $0x28, %rsp
popq %rbx
popq %r14
retq
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c45f
jmp 0x3c46e
jmp 0x3c47d
jmp 0x3c45f
jmp 0x3c46e
jmp 0x3c47d
jmp 0x3c45f
jmp 0x3c46e
jmp 0x3c47d
jmp 0x3c45f
jmp 0x3c46e
jmp 0x3c47d
jmp 0x3c45f
jmp 0x3c46e
jmp 0x3c47d
jmp 0x3c45f
jmp 0x3c46e
jmp 0x3c47d
jmp 0x3c45f
jmp 0x3c46e
jmp 0x3c47d
jmp 0x3c45f
jmp 0x3c46e
jmp 0x3c47d
jmp 0x3c45f
jmp 0x3c46e
jmp 0x3c47d
jmp 0x3c45f
jmp 0x3c46e
jmp 0x3c47d
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x10c24
jmp 0x3c471
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x31faa
jmp 0x3c480
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x31fbc
movq %rbx, %rdi
callq 0xcbb0
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
jmp 0x3c4a6
movq %rax, %rdi
callq 0x28baf