// File: /workspace/github_cpp_makefile_star2_O2/lukasz-wiecaszek[P]h264iframedecoder/./ilog2.hpp
// Function: int ymn::ilog2<unsigned int>(unsigned int)
constexpr static inline int ilog2(T n)
{
    /* Because the noexcept operator always returns true for a constant expression, */
    /* it can be used to check if a particular invocation of a constexpr */
    /* takes the constant expression branch. */
    if constexpr (noexcept(n)) {
        return (n) < 2 ? 0 :
            (n) & (1ULL << 63) ? 63 :
            (n) & (1ULL << 62) ? 62 :
            (n) & (1ULL << 61) ? 61 :
            (n) & (1ULL << 60) ? 60 :
            (n) & (1ULL << 59) ? 59 :
            (n) & (1ULL << 58) ? 58 :
            (n) & (1ULL << 57) ? 57 :
            (n) & (1ULL << 56) ? 56 :
            (n) & (1ULL << 55) ? 55 :
            (n) & (1ULL << 54) ? 54 :
            (n) & (1ULL << 53) ? 53 :
            (n) & (1ULL << 52) ? 52 :
            (n) & (1ULL << 51) ? 51 :
            (n) & (1ULL << 50) ? 50 :
            (n) & (1ULL << 49) ? 49 :
            (n) & (1ULL << 48) ? 48 :
            (n) & (1ULL << 47) ? 47 :
            (n) & (1ULL << 46) ? 46 :
            (n) & (1ULL << 45) ? 45 :
            (n) & (1ULL << 44) ? 44 :
            (n) & (1ULL << 43) ? 43 :
            (n) & (1ULL << 42) ? 42 :
            (n) & (1ULL << 41) ? 41 :
            (n) & (1ULL << 40) ? 40 :
            (n) & (1ULL << 39) ? 39 :
            (n) & (1ULL << 38) ? 38 :
            (n) & (1ULL << 37) ? 37 :
            (n) & (1ULL << 36) ? 36 :
            (n) & (1ULL << 35) ? 35 :
            (n) & (1ULL << 34) ? 34 :
            (n) & (1ULL << 33) ? 33 :
            (n) & (1ULL << 32) ? 32 :
            (n) & (1ULL << 31) ? 31 :
            (n) & (1ULL << 30) ? 30 :
            (n) & (1ULL << 29) ? 29 :
            (n) & (1ULL << 28) ? 28 :
            (n) & (1ULL << 27) ? 27 :
            (n) & (1ULL << 26) ? 26 :
            (n) & (1ULL << 25) ? 25 :
            (n) & (1ULL << 24) ? 24 :
            (n) & (1ULL << 23) ? 23 :
            (n) & (1ULL << 22) ? 22 :
            (n) & (1ULL << 21) ? 21 :
            (n) & (1ULL << 20) ? 20 :
            (n) & (1ULL << 19) ? 19 :
            (n) & (1ULL << 18) ? 18 :
            (n) & (1ULL << 17) ? 17 :
            (n) & (1ULL << 16) ? 16 :
            (n) & (1ULL << 15) ? 15 :
            (n) & (1ULL << 14) ? 14 :
            (n) & (1ULL << 13) ? 13 :
            (n) & (1ULL << 12) ? 12 :
            (n) & (1ULL << 11) ? 11 :
            (n) & (1ULL << 10) ? 10 :
            (n) & (1ULL <<  9) ?  9 :
            (n) & (1ULL <<  8) ?  8 :
            (n) & (1ULL <<  7) ?  7 :
            (n) & (1ULL <<  6) ?  6 :
            (n) & (1ULL <<  5) ?  5 :
            (n) & (1ULL <<  4) ?  4 :
            (n) & (1ULL <<  3) ?  3 :
            (n) & (1ULL <<  2) ?  2 :
             1;
    }
    else {
        if (sizeof(n) <= sizeof(int))
            return fls(n) - 1;
        else
        if (sizeof(n) <= sizeof(long))
            return flsl(n) - 1;
        else
            return flsll(n) - 1;
    }
}

// Assembly:
xorl %eax, %eax
cmpl $0x2, %edi
jae 0x5b96
retq
testl %edi, %edi
js 0x5cd1
cmpl $0x3fffffff, %edi       # imm = 0x3FFFFFFF
ja 0x5cd5
cmpl $0x1fffffff, %edi       # imm = 0x1FFFFFFF
ja 0x5cd9
cmpl $0xfffffff, %edi        # imm = 0xFFFFFFF
ja 0x5cdd
cmpl $0x7ffffff, %edi        # imm = 0x7FFFFFF
ja 0x5ce1
cmpl $0x3ffffff, %edi        # imm = 0x3FFFFFF
ja 0x5ce5
cmpl $0x1ffffff, %edi        # imm = 0x1FFFFFF
ja 0x5ce9
cmpl $0xffffff, %edi         # imm = 0xFFFFFF
ja 0x5ced
cmpl $0x7fffff, %edi         # imm = 0x7FFFFF
ja 0x5cf1
cmpl $0x3fffff, %edi         # imm = 0x3FFFFF
ja 0x5cf5
cmpl $0x1fffff, %edi         # imm = 0x1FFFFF
ja 0x5cf9
cmpl $0xfffff, %edi          # imm = 0xFFFFF
ja 0x5cfd
cmpl $0x7ffff, %edi          # imm = 0x7FFFF
ja 0x5d01
cmpl $0x3ffff, %edi          # imm = 0x3FFFF
ja 0x5d05
cmpl $0x1ffff, %edi          # imm = 0x1FFFF
ja 0x5d09
cmpl $0xffff, %edi           # imm = 0xFFFF
ja 0x5d0d
cmpl $0x7fff, %edi           # imm = 0x7FFF
ja 0x5d11
cmpl $0x3fff, %edi           # imm = 0x3FFF
ja 0x5d15
cmpl $0x1fff, %edi           # imm = 0x1FFF
ja 0x5d19
cmpl $0xfff, %edi            # imm = 0xFFF
ja 0x5d1d
cmpl $0x7ff, %edi            # imm = 0x7FF
ja 0x5d21
cmpl $0x3ff, %edi            # imm = 0x3FF
ja 0x5d25
cmpl $0x1ff, %edi            # imm = 0x1FF
ja 0x5d29
cmpl $0xff, %edi
ja 0x5d2d
cmpl $0x7f, %edi
ja 0x5d31
cmpl $0x3f, %edi
ja 0x5d35
cmpl $0x1f, %edi
ja 0x5d39
cmpl $0xf, %edi
ja 0x5d3d
cmpl $0x7, %edi
ja 0x5d41
cmpl $0x4, %edi
pushq $0x2
popq %rax
sbbl $0x0, %eax
retq
pushq $0x1f
jmp 0x5d43
pushq $0x1e
jmp 0x5d43
pushq $0x1d
jmp 0x5d43
pushq $0x1c
jmp 0x5d43
pushq $0x1b
jmp 0x5d43
pushq $0x1a
jmp 0x5d43
pushq $0x19
jmp 0x5d43
pushq $0x18
jmp 0x5d43
pushq $0x17
jmp 0x5d43
pushq $0x16
jmp 0x5d43
pushq $0x15
jmp 0x5d43
pushq $0x14
jmp 0x5d43
pushq $0x13
jmp 0x5d43
pushq $0x12
jmp 0x5d43
pushq $0x11
jmp 0x5d43
pushq $0x10
jmp 0x5d43
pushq $0xf
jmp 0x5d43
pushq $0xe
jmp 0x5d43
pushq $0xd
jmp 0x5d43
pushq $0xc
jmp 0x5d43
pushq $0xb
jmp 0x5d43
pushq $0xa
jmp 0x5d43
pushq $0x9
jmp 0x5d43
pushq $0x8
jmp 0x5d43
pushq $0x7
jmp 0x5d43
pushq $0x6
jmp 0x5d43
pushq $0x5
jmp 0x5d43
pushq $0x4
jmp 0x5d43
pushq $0x3
popq %rax
retq
nop