// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x1a0, %rsp            # imm = 0x1A0
movq %rdi, -0x8(%rbp)
movl $0x20, -0x1c(%rbp)
xorl %edi, %edi
callq 0x6c390
movl %eax, -0x20(%rbp)
leaq 0x4119d(%rip), %rsi     # 0x8f4b4
leaq 0x3e518(%rip), %rdx     # 0x8c836
leaq -0x18(%rbp), %rdi
movq %rdi, -0x120(%rbp)
leaq -0x1c(%rbp), %rcx
leaq -0x20(%rbp), %r8
callq 0x4eba0
movq -0x120(%rbp), %rdi
callq 0x31090
movb %al, -0x111(%rbp)
jmp 0x4e34a
movb -0x111(%rbp), %al
testb $0x1, %al
jne 0x4e356
jmp 0x4e36c
jmp 0x4e404
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x4e481
leaq -0x38(%rbp), %rdi
callq 0x16d70
jmp 0x4e377
leaq -0x18(%rbp), %rdi
callq 0x310b0
movq %rax, -0x128(%rbp)
jmp 0x4e389
movq -0x128(%rbp), %r8
leaq 0x3e484(%rip), %rdx     # 0x8c81b
leaq -0x40(%rbp), %rdi
movl $0x2, %esi
movl $0x8, %ecx
callq 0x13fa0
jmp 0x4e3ac
leaq -0x40(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x14060
jmp 0x4e3bb
leaq -0x40(%rbp), %rdi
callq 0x14020
leaq -0x38(%rbp), %rdi
callq 0x31070
movl $0x1, -0x44(%rbp)
jmp 0x4e40b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x4e3f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x14020
leaq -0x38(%rbp), %rdi
callq 0x31070
jmp 0x4e481
movl $0x0, -0x44(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x30d20
movl -0x44(%rbp), %eax
testl %eax, %eax
je 0x4e422
jmp 0x4e41d
jmp 0x4eadf
movl $0x1, -0x5c(%rbp)
movl $0x2, %edi
callq 0x6c390
movl %eax, -0x60(%rbp)
leaq 0x3d2b8(%rip), %rsi     # 0x8b6f5
leaq 0x3e409(%rip), %rdx     # 0x8c84d
leaq -0x58(%rbp), %rdi
movq %rdi, -0x138(%rbp)
leaq -0x5c(%rbp), %rcx
leaq -0x60(%rbp), %r8
callq 0x4eba0
movq -0x138(%rbp), %rdi
callq 0x31090
movb %al, -0x129(%rbp)
jmp 0x4e470
movb -0x129(%rbp), %al
testb $0x1, %al
jne 0x4e47c
jmp 0x4e4a0
jmp 0x4e53b
leaq -0x18(%rbp), %rdi
callq 0x30d20
jmp 0x4eaf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x4e5c9
leaq -0x68(%rbp), %rdi
callq 0x16d70
jmp 0x4e4ab
leaq -0x58(%rbp), %rdi
callq 0x310b0
movq %rax, -0x140(%rbp)
jmp 0x4e4bd
movq -0x140(%rbp), %r8
leaq 0x3e350(%rip), %rdx     # 0x8c81b
leaq -0x70(%rbp), %rdi
movl $0x2, %esi
movl $0xa, %ecx
callq 0x13fa0
jmp 0x4e4e0
leaq -0x70(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x14060
jmp 0x4e4ef
leaq -0x70(%rbp), %rdi
callq 0x14020
leaq -0x68(%rbp), %rdi
callq 0x31070
movl $0x1, -0x44(%rbp)
jmp 0x4e542
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x4e52d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x14020
leaq -0x68(%rbp), %rdi
callq 0x31070
jmp 0x4e5c9
movl $0x0, -0x44(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x30d20
movl -0x44(%rbp), %eax
testl %eax, %eax
je 0x4e559
jmp 0x4e554
jmp 0x4eadf
movl $0x0, -0x84(%rbp)
movl $0x1, %edi
callq 0x6c390
movl %eax, -0x88(%rbp)
leaq 0x3db44(%rip), %rsi     # 0x8c0be
leaq 0x3e2e3(%rip), %rdx     # 0x8c864
xorl %eax, %eax
movl %eax, %r9d
leaq -0x80(%rbp), %rdi
movq %rdi, -0x150(%rbp)
leaq -0x84(%rbp), %rcx
leaq -0x88(%rbp), %r8
callq 0x4ebf0
movq -0x150(%rbp), %rdi
callq 0x31090
movb %al, -0x141(%rbp)
jmp 0x4e5b8
movb -0x141(%rbp), %al
testb $0x1, %al
jne 0x4e5c4
jmp 0x4e5e8
jmp 0x4e69b
leaq -0x58(%rbp), %rdi
callq 0x30d20
jmp 0x4eaf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x4e72c
leaq -0x90(%rbp), %rdi
callq 0x16d70
jmp 0x4e5f6
leaq -0x80(%rbp), %rdi
callq 0x310b0
movq %rax, -0x158(%rbp)
jmp 0x4e608
movq -0x158(%rbp), %r8
leaq 0x3e205(%rip), %rdx     # 0x8c81b
leaq -0x98(%rbp), %rdi
movl $0x2, %esi
movl $0xc, %ecx
callq 0x13fa0
jmp 0x4e62e
leaq -0x98(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x14060
jmp 0x4e643
leaq -0x98(%rbp), %rdi
callq 0x14020
leaq -0x90(%rbp), %rdi
callq 0x31070
movl $0x1, -0x44(%rbp)
jmp 0x4e6a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x4e68a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x14020
leaq -0x90(%rbp), %rdi
callq 0x31070
jmp 0x4e72c
movl $0x0, -0x44(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x30d20
movl -0x44(%rbp), %eax
testl %eax, %eax
je 0x4e6b9
jmp 0x4e6b4
jmp 0x4eadf
movl $0x0, -0xac(%rbp)
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x6c390
movl %eax, -0xb0(%rbp)
leaq 0x3d9e4(%rip), %rsi     # 0x8c0be
leaq 0x3e19a(%rip), %rdx     # 0x8c87b
xorl %eax, %eax
movl %eax, %r9d
leaq -0xa8(%rbp), %rdi
movq %rdi, -0x168(%rbp)
leaq -0xac(%rbp), %rcx
leaq -0xb0(%rbp), %r8
callq 0x4ebf0
movq -0x168(%rbp), %rdi
callq 0x31090
movb %al, -0x159(%rbp)
jmp 0x4e71b
movb -0x159(%rbp), %al
testb $0x1, %al
jne 0x4e727
jmp 0x4e74b
jmp 0x4e801
leaq -0x80(%rbp), %rdi
callq 0x30d20
jmp 0x4eaf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x4e890
leaq -0xb8(%rbp), %rdi
callq 0x16d70
jmp 0x4e759
leaq -0xa8(%rbp), %rdi
callq 0x310b0
movq %rax, -0x170(%rbp)
jmp 0x4e76e
movq -0x170(%rbp), %r8
leaq 0x3e09f(%rip), %rdx     # 0x8c81b
leaq -0xc0(%rbp), %rdi
movl $0x2, %esi
movl $0xe, %ecx
callq 0x13fa0
jmp 0x4e794
leaq -0xc0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x14060
jmp 0x4e7a9
leaq -0xc0(%rbp), %rdi
callq 0x14020
leaq -0xb8(%rbp), %rdi
callq 0x31070
movl $0x1, -0x44(%rbp)
jmp 0x4e808
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x4e7f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x14020
leaq -0xb8(%rbp), %rdi
callq 0x31070
jmp 0x4e890
movl $0x0, -0x44(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x30d20
movl -0x44(%rbp), %eax
testl %eax, %eax
je 0x4e822
jmp 0x4e81d
jmp 0x4eadf
movl $0x1, -0xd4(%rbp)
movl $0xfffffffe, %edi       # imm = 0xFFFFFFFE
callq 0x6c390
movl %eax, -0xd8(%rbp)
leaq 0x3ceb2(%rip), %rsi     # 0x8b6f5
leaq 0x3e051(%rip), %rdx     # 0x8c89b
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x180(%rbp)
leaq -0xd4(%rbp), %rcx
leaq -0xd8(%rbp), %r8
callq 0x4eba0
movq -0x180(%rbp), %rdi
callq 0x31090
movb %al, -0x171(%rbp)
jmp 0x4e87f
movb -0x171(%rbp), %al
testb $0x1, %al
jne 0x4e88b
jmp 0x4e8b2
jmp 0x4e968
leaq -0xa8(%rbp), %rdi
callq 0x30d20
jmp 0x4eaf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x4e9f7
leaq -0xe0(%rbp), %rdi
callq 0x16d70
jmp 0x4e8c0
leaq -0xd0(%rbp), %rdi
callq 0x310b0
movq %rax, -0x188(%rbp)
jmp 0x4e8d5
movq -0x188(%rbp), %r8
leaq 0x3df38(%rip), %rdx     # 0x8c81b
leaq -0xe8(%rbp), %rdi
movl $0x2, %esi
movl $0xf, %ecx
callq 0x13fa0
jmp 0x4e8fb
leaq -0xe8(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x14060
jmp 0x4e910
leaq -0xe8(%rbp), %rdi
callq 0x14020
leaq -0xe0(%rbp), %rdi
callq 0x31070
movl $0x1, -0x44(%rbp)
jmp 0x4e96f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x4e957
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x14020
leaq -0xe0(%rbp), %rdi
callq 0x31070
jmp 0x4e9f7
movl $0x0, -0x44(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x30d20
movl -0x44(%rbp), %eax
testl %eax, %eax
je 0x4e989
jmp 0x4e984
jmp 0x4eadf
movl $0x1f, -0xfc(%rbp)
movl $0x80000000, %edi       # imm = 0x80000000
callq 0x6c390
movl %eax, -0x100(%rbp)
leaq 0x3df11(%rip), %rsi     # 0x8c8bb
leaq 0x3df0d(%rip), %rdx     # 0x8c8be
leaq -0xf8(%rbp), %rdi
movq %rdi, -0x198(%rbp)
leaq -0xfc(%rbp), %rcx
leaq -0x100(%rbp), %r8
callq 0x4eba0
movq -0x198(%rbp), %rdi
callq 0x31090
movb %al, -0x189(%rbp)
jmp 0x4e9e6
movb -0x189(%rbp), %al
testb $0x1, %al
jne 0x4e9f2
jmp 0x4ea19
jmp 0x4eacc
leaq -0xd0(%rbp), %rdi
callq 0x30d20
jmp 0x4eaf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x4eae8
leaq -0x108(%rbp), %rdi
callq 0x16d70
jmp 0x4ea27
leaq -0xf8(%rbp), %rdi
callq 0x310b0
movq %rax, -0x1a0(%rbp)
jmp 0x4ea3c
movq -0x1a0(%rbp), %r8
leaq 0x3ddd1(%rip), %rdx     # 0x8c81b
leaq -0x110(%rbp), %rdi
movl $0x2, %esi
movl $0x10, %ecx
callq 0x13fa0
jmp 0x4ea62
leaq -0x110(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x14060
jmp 0x4ea77
leaq -0x110(%rbp), %rdi
callq 0x14020
leaq -0x108(%rbp), %rdi
callq 0x31070
movl $0x1, -0x44(%rbp)
jmp 0x4ead3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x4eabe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x14020
leaq -0x108(%rbp), %rdi
callq 0x31070
jmp 0x4eae8
movl $0x0, -0x44(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x30d20
addq $0x1a0, %rsp            # imm = 0x1A0
popq %rbp
retq
leaq -0xf8(%rbp), %rdi
callq 0x30d20
movq -0x28(%rbp), %rdi
callq 0xee80
nopl (%rax)