// File: /workspace/github_c_makefile_star2_O3/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 0x8(%rsp), %rbx
movl $0x20, (%rbx)
xorl %edi, %edi
callq 0x40f9a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x2560e(%rip), %rsi     # 0x56b6e
leaq 0x22d5f(%rip), %rdx     # 0x542c6
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x31b38
movb (%r14), %bl
testb %bl, %bl
jne 0x315f8
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x31597
movq (%rax), %r8
jmp 0x3159e
leaq 0x26929(%rip), %r8      # 0x57ec7
leaq 0x22d06(%rip), %rdx     # 0x542ab
leaq 0x10(%rsp), %rdi
movl $0x2, %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 0x315f8
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x315f8
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x315f8
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
testb %bl, %bl
je 0x319f7
leaq 0x8(%rsp), %rbx
movl $0x1, (%rbx)
movl $0x2, %edi
callq 0x40f9a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x21b47(%rip), %rsi     # 0x53177
leaq 0x22ca6(%rip), %rdx     # 0x542dd
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x31b38
movb (%r14), %bl
testb %bl, %bl
jne 0x316c8
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x31667
movq (%rax), %r8
jmp 0x3166e
leaq 0x26859(%rip), %r8      # 0x57ec7
leaq 0x22c36(%rip), %rdx     # 0x542ab
leaq 0x10(%rsp), %rdi
movl $0x2, %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 0x316c8
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x316c8
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x316c8
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
testb %bl, %bl
je 0x319f7
leaq 0x8(%rsp), %rbx
movl $0x0, (%rbx)
movl $0x1, %edi
callq 0x40f9a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x22438(%rip), %rsi     # 0x53b38
leaq 0x22bed(%rip), %rdx     # 0x542f4
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x31b38
movb (%r14), %bl
testb %bl, %bl
jne 0x31798
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x31737
movq (%rax), %r8
jmp 0x3173e
leaq 0x26789(%rip), %r8      # 0x57ec7
leaq 0x22b66(%rip), %rdx     # 0x542ab
leaq 0x10(%rsp), %rdi
movl $0x2, %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 0x31798
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x31798
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x31798
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
testb %bl, %bl
je 0x319f7
leaq 0x8(%rsp), %rbx
movl $0x0, (%rbx)
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x40f9a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x22368(%rip), %rsi     # 0x53b38
leaq 0x22b34(%rip), %rdx     # 0x5430b
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x31b38
movb (%r14), %bl
testb %bl, %bl
jne 0x31868
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x31807
movq (%rax), %r8
jmp 0x3180e
leaq 0x266b9(%rip), %r8      # 0x57ec7
leaq 0x22a96(%rip), %rdx     # 0x542ab
leaq 0x10(%rsp), %rdi
movl $0x2, %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 0x31868
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x31868
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x31868
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
testb %bl, %bl
je 0x319f7
leaq 0x8(%rsp), %rbx
movl $0x1, (%rbx)
movl $0xfffffffe, %edi       # imm = 0xFFFFFFFE
callq 0x40f9a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x218d7(%rip), %rsi     # 0x53177
leaq 0x22a84(%rip), %rdx     # 0x5432b
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x31b38
movb (%r14), %bl
testb %bl, %bl
jne 0x31938
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x318d7
movq (%rax), %r8
jmp 0x318de
leaq 0x265e9(%rip), %r8      # 0x57ec7
leaq 0x229c6(%rip), %rdx     # 0x542ab
leaq 0x10(%rsp), %rdi
movl $0x2, %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 0x31938
movl $0x1, %edi
callq 0x10b61
testb %al, %al
je 0x31938
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x31938
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
testb %bl, %bl
je 0x319f7
leaq 0x8(%rsp), %rbx
movl $0x1f, (%rbx)
movl $0x80000000, %edi       # imm = 0x80000000
callq 0x40f9a
leaq 0x10(%rsp), %r8
movl %eax, (%r8)
leaq 0x229db(%rip), %rsi     # 0x5434b
leaq 0x229d7(%rip), %rdx     # 0x5434e
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
callq 0x31b38
cmpb $0x0, (%r14)
jne 0x319eb
leaq 0x8(%rsp), %rdi
callq 0x12e46
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x319a6
movq (%rax), %r8
jmp 0x319ad
leaq 0x2651a(%rip), %r8      # 0x57ec7
leaq 0x228f7(%rip), %rdx     # 0x542ab
leaq 0x10(%rsp), %rdi
movl $0x2, %esi
movl $0x10, %ecx
callq 0x10b64
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x10c00
leaq 0x10(%rsp), %rdi
callq 0x10bd0
leaq 0x8(%rsp), %rdi
callq 0x31a70
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x2c37a
addq $0x28, %rsp
popq %rbx
popq %r14
retq
jmp 0x31a31
jmp 0x31a40
jmp 0x31a4f
jmp 0x31a64
jmp 0x31a64
jmp 0x31a31
jmp 0x31a40
jmp 0x31a4f
jmp 0x31a64
jmp 0x31a64
jmp 0x31a31
jmp 0x31a40
jmp 0x31a4f
jmp 0x31a64
jmp 0x31a64
jmp 0x31a31
jmp 0x31a40
jmp 0x31a4f
jmp 0x31a64
jmp 0x31a64
jmp 0x31a31
jmp 0x31a40
jmp 0x31a4f
jmp 0x31a64
jmp 0x31a64
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x10bd0
jmp 0x31a43
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x31a70
jmp 0x31a52
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x31a82
movq %rbx, %rdi
callq 0xcbb0
movq %rax, %rdi
callq 0x287ef