// File: /workspace/github_c_makefile_star2_O3/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 0x40ea6
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x18a58(%rip), %rsi     # 0x53b38
leaq 0x1a62a(%rip), %rdx     # 0x55711
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3ba7c
cmpb $0x0, (%r14)
jne 0x3b177
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3b116
movq (%rax), %r8
jmp 0x3b11d
leaq 0x1cdaa(%rip), %r8      # 0x57ec7
leaq 0x1a5d6(%rip), %rdx     # 0x556fa
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0x8, %ecx
callq 0x10b64
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c00
leaq 0x10(%rsp), %rdi
callq 0x10bd0
cmpq $0x0, 0x8(%rsp)
je 0x3b177
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x3b177
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3b177
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
leaq 0x8(%rsp), %rbx
movl $0x1, (%rbx)
movl $0x1, %edi
callq 0x40ea6
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x17fd0(%rip), %rsi     # 0x53177
leaq 0x1a575(%rip), %rdx     # 0x55723
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3ba7c
cmpb $0x0, (%r14)
jne 0x3b23e
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3b1dd
movq (%rax), %r8
jmp 0x3b1e4
leaq 0x1cce3(%rip), %r8      # 0x57ec7
leaq 0x1a50f(%rip), %rdx     # 0x556fa
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0x9, %ecx
callq 0x10b64
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c00
leaq 0x10(%rsp), %rdi
callq 0x10bd0
cmpq $0x0, 0x8(%rsp)
je 0x3b23e
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x3b23e
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3b23e
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
leaq 0x8(%rsp), %rbx
movl $0x2, (%rbx)
movl $0x2, %edi
callq 0x40ea6
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1b901(%rip), %rsi     # 0x56b6f
leaq 0x1a4c0(%rip), %rdx     # 0x55735
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3ba7c
cmpb $0x0, (%r14)
jne 0x3b305
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3b2a4
movq (%rax), %r8
jmp 0x3b2ab
leaq 0x1cc1c(%rip), %r8      # 0x57ec7
leaq 0x1a448(%rip), %rdx     # 0x556fa
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0xa, %ecx
callq 0x10b64
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c00
leaq 0x10(%rsp), %rdi
callq 0x10bd0
cmpq $0x0, 0x8(%rsp)
je 0x3b305
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x3b305
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3b305
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
leaq 0x8(%rsp), %rbx
movl $0x4, (%rbx)
movl $0x3, %edi
callq 0x40ea6
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x19cd9(%rip), %rsi     # 0x5500e
leaq 0x1a40b(%rip), %rdx     # 0x55747
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3ba7c
cmpb $0x0, (%r14)
jne 0x3b3cc
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3b36b
movq (%rax), %r8
jmp 0x3b372
leaq 0x1cb55(%rip), %r8      # 0x57ec7
leaq 0x1a381(%rip), %rdx     # 0x556fa
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0xb, %ecx
callq 0x10b64
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c00
leaq 0x10(%rsp), %rdi
callq 0x10bd0
cmpq $0x0, 0x8(%rsp)
je 0x3b3cc
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x3b3cc
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3b3cc
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
leaq 0x8(%rsp), %rbx
movl $0x4, (%rbx)
movl $0x4, %edi
callq 0x40ea6
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x19c12(%rip), %rsi     # 0x5500e
leaq 0x1a356(%rip), %rdx     # 0x55759
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3ba7c
cmpb $0x0, (%r14)
jne 0x3b493
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3b432
movq (%rax), %r8
jmp 0x3b439
leaq 0x1ca8e(%rip), %r8      # 0x57ec7
leaq 0x1a2ba(%rip), %rdx     # 0x556fa
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0xc, %ecx
callq 0x10b64
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c00
leaq 0x10(%rsp), %rdi
callq 0x10bd0
cmpq $0x0, 0x8(%rsp)
je 0x3b493
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x3b493
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3b493
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
leaq 0x8(%rsp), %rbx
movl $0x8, (%rbx)
movl $0x5, %edi
callq 0x40ea6
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1a2e0(%rip), %rsi     # 0x557a3
leaq 0x1a2a1(%rip), %rdx     # 0x5576b
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3ba7c
cmpb $0x0, (%r14)
jne 0x3b55a
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3b4f9
movq (%rax), %r8
jmp 0x3b500
leaq 0x1c9c7(%rip), %r8      # 0x57ec7
leaq 0x1a1f3(%rip), %rdx     # 0x556fa
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0xd, %ecx
callq 0x10b64
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c00
leaq 0x10(%rsp), %rdi
callq 0x10bd0
cmpq $0x0, 0x8(%rsp)
je 0x3b55a
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x3b55a
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3b55a
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
leaq 0x8(%rsp), %rbx
movl $0x8, (%rbx)
movl $0x7, %edi
callq 0x40ea6
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1a219(%rip), %rsi     # 0x557a3
leaq 0x1a1ec(%rip), %rdx     # 0x5577d
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3ba7c
cmpb $0x0, (%r14)
jne 0x3b621
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3b5c0
movq (%rax), %r8
jmp 0x3b5c7
leaq 0x1c900(%rip), %r8      # 0x57ec7
leaq 0x1a12c(%rip), %rdx     # 0x556fa
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0xe, %ecx
callq 0x10b64
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c00
leaq 0x10(%rsp), %rdi
callq 0x10bd0
cmpq $0x0, 0x8(%rsp)
je 0x3b621
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x3b621
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3b621
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
leaq 0x8(%rsp), %rbx
movl $0x8, (%rbx)
movl $0x8, %edi
callq 0x40ea6
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1a152(%rip), %rsi     # 0x557a3
leaq 0x1a137(%rip), %rdx     # 0x5578f
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3ba7c
cmpb $0x0, (%r14)
jne 0x3b6e8
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3b687
movq (%rax), %r8
jmp 0x3b68e
leaq 0x1c839(%rip), %r8      # 0x57ec7
leaq 0x1a065(%rip), %rdx     # 0x556fa
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0xf, %ecx
callq 0x10b64
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c00
leaq 0x10(%rsp), %rdi
callq 0x10bd0
cmpq $0x0, 0x8(%rsp)
je 0x3b6e8
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x3b6e8
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3b6e8
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
leaq 0x8(%rsp), %rbx
movl $0x80, (%rbx)
movl $0x7e, %edi
callq 0x40ea6
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x1a089(%rip), %rsi     # 0x557a1
leaq 0x1a086(%rip), %rdx     # 0x557a5
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3ba7c
cmpb $0x0, (%r14)
jne 0x3b7af
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3b74e
movq (%rax), %r8
jmp 0x3b755
leaq 0x1c772(%rip), %r8      # 0x57ec7
leaq 0x19f9e(%rip), %rdx     # 0x556fa
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0x10, %ecx
callq 0x10b64
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c00
leaq 0x10(%rsp), %rdi
callq 0x10bd0
cmpq $0x0, 0x8(%rsp)
je 0x3b7af
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x3b7af
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3b7af
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
leaq 0x8(%rsp), %rbx
movl $0x10000, (%rbx)        # imm = 0x10000
movl $0xffdc, %edi           # imm = 0xFFDC
callq 0x40ea6
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x19fda(%rip), %rsi     # 0x557b9
leaq 0x19fd9(%rip), %rdx     # 0x557bf
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x3ba7c
cmpb $0x0, (%r14)
jne 0x3b876
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3b815
movq (%rax), %r8
jmp 0x3b81c
leaq 0x1c6ab(%rip), %r8      # 0x57ec7
leaq 0x19ed7(%rip), %rdx     # 0x556fa
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0x11, %ecx
callq 0x10b64
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c00
leaq 0x10(%rsp), %rdi
callq 0x10bd0
cmpq $0x0, 0x8(%rsp)
je 0x3b876
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x3b876
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3b876
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
leaq 0x8(%rsp), %rbx
movl $0x80000000, (%rbx)     # imm = 0x80000000
movl $0x78a1987a, %edi       # imm = 0x78A1987A
callq 0x40ea6
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x19f2f(%rip), %rsi     # 0x557d5
leaq 0x19f33(%rip), %rdx     # 0x557e0
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x33604
cmpb $0x0, (%r14)
jne 0x3b93d
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x3b8dc
movq (%rax), %r8
jmp 0x3b8e3
leaq 0x1c5e4(%rip), %r8      # 0x57ec7
leaq 0x19e10(%rip), %rdx     # 0x556fa
leaq 0x10(%rsp), %rdi
movl $0x1, %esi
movl $0x12, %ecx
callq 0x10b64
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c00
leaq 0x10(%rsp), %rdi
callq 0x10bd0
cmpq $0x0, 0x8(%rsp)
je 0x3b93d
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x3b93d
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x3b93d
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
addq $0x28, %rsp
popq %rbx
popq %r14
retq
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3b9c4
jmp 0x3b9d3
jmp 0x3b9e2
jmp 0x3b9c4
jmp 0x3b9d3
jmp 0x3b9e2
jmp 0x3b9c4
jmp 0x3b9d3
jmp 0x3b9e2
jmp 0x3b9c4
jmp 0x3b9d3
jmp 0x3b9e2
jmp 0x3b9c4
jmp 0x3b9d3
jmp 0x3b9e2
jmp 0x3b9c4
jmp 0x3b9d3
jmp 0x3b9e2
jmp 0x3b9c4
jmp 0x3b9d3
jmp 0x3b9e2
jmp 0x3b9c4
jmp 0x3b9d3
jmp 0x3b9e2
jmp 0x3b9c4
jmp 0x3b9d3
jmp 0x3b9e2
jmp 0x3b9c4
jmp 0x3b9d3
jmp 0x3b9e2
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x10bd0
jmp 0x3b9d6
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x31a70
jmp 0x3b9e5
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x31a82
movq %rbx, %rdi
callq 0xcbb0
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
jmp 0x3ba0b
movq %rax, %rdi
callq 0x287ef
nop