// File: /workspace/github_c_makefile_star2_O2/deplinenoise[P]tundra/unittest/Test_BitFuncs.cpp
// Function: BitFuncs_PopLsb_Test::TestBody()
TEST(BitFuncs, PopLsb)
{
  ASSERT_EQ(32, CountTrailingZeroes(0));

  ASSERT_EQ(1, CountTrailingZeroes(2));

  ASSERT_EQ(0, CountTrailingZeroes(1));

  ASSERT_EQ(0, CountTrailingZeroes(0xffffffff));
  ASSERT_EQ(1, CountTrailingZeroes(0xfffffffe));
  ASSERT_EQ(31, CountTrailingZeroes(0x80000000));
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x28, %rsp
leaq 0x10(%rsp), %rbx
movl $0x20, (%rbx)
xorl %edi, %edi
callq 0x3426f
leaq 0x8(%rsp), %r8
movl %eax, (%r8)
leaq 0x21768(%rip), %rsi     # 0x48b68
leaq 0x1ee8f(%rip), %rdx     # 0x46296
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x2785d
cmpb $0x0, (%r14)
je 0x275be
leaq 0x20(%rsp), %rdi
callq 0x2295e
leaq 0x10(%rsp), %rbx
movl $0x1, (%rbx)
pushq $0x2
popq %rdi
callq 0x3426f
leaq 0x8(%rsp), %r8
movl %eax, (%r8)
leaq 0x1dcfa(%rip), %rsi     # 0x45147
leaq 0x1ee59(%rip), %rdx     # 0x462ad
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x2785d
cmpb $0x0, (%r14)
je 0x275d7
leaq 0x20(%rsp), %rdi
callq 0x2295e
leaq 0x10(%rsp), %rbx
andl $0x0, (%rbx)
pushq $0x1
popq %rdi
callq 0x3426f
leaq 0x8(%rsp), %r8
movl %eax, (%r8)
leaq 0x1e671(%rip), %rsi     # 0x45b08
leaq 0x1ee26(%rip), %rdx     # 0x462c4
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x2785d
cmpb $0x0, (%r14)
je 0x27622
leaq 0x20(%rsp), %rdi
callq 0x2295e
leaq 0x10(%rsp), %rbx
andl $0x0, (%rbx)
pushq $-0x1
popq %rdi
callq 0x3426f
leaq 0x8(%rsp), %r8
movl %eax, (%r8)
leaq 0x1e627(%rip), %rsi     # 0x45b08
leaq 0x1edf3(%rip), %rdx     # 0x462db
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x2785d
cmpb $0x0, (%r14)
je 0x2766d
leaq 0x20(%rsp), %rdi
callq 0x2295e
leaq 0x10(%rsp), %rbx
movl $0x1, (%rbx)
pushq $-0x2
popq %rdi
callq 0x3426f
leaq 0x8(%rsp), %r8
movl %eax, (%r8)
leaq 0x1dc19(%rip), %rsi     # 0x45147
leaq 0x1edc6(%rip), %rdx     # 0x462fb
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x2785d
cmpb $0x0, (%r14)
je 0x276b5
leaq 0x20(%rsp), %rdi
callq 0x2295e
leaq 0x10(%rsp), %rbx
movl $0x1f, (%rbx)
movl $0x80000000, %edi       # imm = 0x80000000
callq 0x3426f
leaq 0x8(%rsp), %r8
movl %eax, (%r8)
leaq 0x1ed9e(%rip), %rsi     # 0x4631b
leaq 0x1ed9a(%rip), %rdx     # 0x4631e
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x2785d
cmpb $0x0, (%r14)
jne 0x27794
leaq 0x10(%rsp), %rdi
callq 0x11c8e
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x27753
movq (%rax), %r8
jmp 0x2775a
leaq 0x10(%rsp), %rdi
callq 0x11c8e
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x275f0
movq (%rax), %r8
jmp 0x275f7
leaq 0x10(%rsp), %rdi
callq 0x11c8e
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x2763b
movq (%rax), %r8
jmp 0x27642
leaq 0x228b0(%rip), %r8      # 0x49ea7
leaq 0x1ec7d(%rip), %rdx     # 0x4627b
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0x8
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x10576
jmp 0x2772a
leaq 0x10(%rsp), %rdi
callq 0x11c8e
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x27686
movq (%rax), %r8
jmp 0x2768d
leaq 0x22865(%rip), %r8      # 0x49ea7
leaq 0x1ec32(%rip), %rdx     # 0x4627b
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0xa
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x10576
jmp 0x2772a
leaq 0x10(%rsp), %rdi
callq 0x11c8e
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x276ce
movq (%rax), %r8
jmp 0x276d5
leaq 0x2281a(%rip), %r8      # 0x49ea7
leaq 0x1ebe7(%rip), %rdx     # 0x4627b
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0xc
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x10576
jmp 0x2772a
leaq 0x10(%rsp), %rdi
callq 0x11c8e
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x276fd
movq (%rax), %r8
jmp 0x27704
leaq 0x227d2(%rip), %r8      # 0x49ea7
leaq 0x1eb9f(%rip), %rdx     # 0x4627b
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0xe
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x10576
jmp 0x2772a
leaq 0x227a3(%rip), %r8      # 0x49ea7
leaq 0x1eb70(%rip), %rdx     # 0x4627b
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0xf
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x10576
leaq 0x20(%rsp), %rbx
leaq 0x8(%rsp), %rdi
callq 0x10558
leaq 0x10(%rsp), %rdi
callq 0x1f8e0
movq %rbx, %rdi
callq 0x2295e
addq $0x28, %rsp
popq %rbx
popq %r14
retq
leaq 0x2274d(%rip), %r8      # 0x49ea7
leaq 0x1eb1a(%rip), %rdx     # 0x4627b
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
pushq $0x10
popq %rcx
callq 0x104f8
leaq 0x8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x10576
leaq 0x8(%rsp), %rdi
callq 0x10558
leaq 0x10(%rsp), %rdi
callq 0x1f8e0
leaq 0x20(%rsp), %rdi
jmp 0x27746
jmp 0x277b9
jmp 0x277c8
jmp 0x277d7
jmp 0x277b9
jmp 0x277c8
jmp 0x277d7
jmp 0x277b9
jmp 0x277c8
jmp 0x277d7
jmp 0x277b9
jmp 0x277c8
jmp 0x277d7
jmp 0x277b9
jmp 0x277c8
jmp 0x277d7
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x10558
jmp 0x277cb
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x1f8e0
jmp 0x277da
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x2295e
movq %rbx, %rdi
callq 0xdbf0