// File: /workspace/github_cpp_makefile_star2_O1/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
jb 0x6d3f
testl %edi, %edi
js 0x6d40
movl $0x1e, %eax
cmpl $0x3fffffff, %edi       # imm = 0x3FFFFFFF
ja 0x6d3f
movl $0x1d, %eax
cmpl $0x1fffffff, %edi       # imm = 0x1FFFFFFF
ja 0x6d3f
movl $0x1c, %eax
cmpl $0xfffffff, %edi        # imm = 0xFFFFFFF
ja 0x6d3f
movl $0x1b, %eax
cmpl $0x7ffffff, %edi        # imm = 0x7FFFFFF
ja 0x6d3f
movl $0x1a, %eax
cmpl $0x3ffffff, %edi        # imm = 0x3FFFFFF
ja 0x6d3f
movl $0x19, %eax
cmpl $0x1ffffff, %edi        # imm = 0x1FFFFFF
ja 0x6d3f
movl $0x18, %eax
cmpl $0xffffff, %edi         # imm = 0xFFFFFF
ja 0x6d3f
movl $0x17, %eax
cmpl $0x7fffff, %edi         # imm = 0x7FFFFF
ja 0x6d3f
movl $0x16, %eax
cmpl $0x3fffff, %edi         # imm = 0x3FFFFF
ja 0x6d3f
movl $0x15, %eax
cmpl $0x1fffff, %edi         # imm = 0x1FFFFF
ja 0x6d3f
movl $0x14, %eax
cmpl $0xfffff, %edi          # imm = 0xFFFFF
ja 0x6d3f
movl $0x13, %eax
cmpl $0x7ffff, %edi          # imm = 0x7FFFF
ja 0x6d3f
movl $0x12, %eax
cmpl $0x3ffff, %edi          # imm = 0x3FFFF
ja 0x6d3f
movl $0x11, %eax
cmpl $0x1ffff, %edi          # imm = 0x1FFFF
ja 0x6d3f
movl $0x10, %eax
cmpl $0xffff, %edi           # imm = 0xFFFF
ja 0x6d3f
movl $0xf, %eax
cmpl $0x7fff, %edi           # imm = 0x7FFF
ja 0x6d3f
movl $0xe, %eax
cmpl $0x3fff, %edi           # imm = 0x3FFF
ja 0x6d3f
movl $0xd, %eax
cmpl $0x1fff, %edi           # imm = 0x1FFF
ja 0x6d3f
movl $0xc, %eax
cmpl $0xfff, %edi            # imm = 0xFFF
ja 0x6d3f
movl $0xb, %eax
cmpl $0x7ff, %edi            # imm = 0x7FF
ja 0x6d3f
movl $0xa, %eax
cmpl $0x3ff, %edi            # imm = 0x3FF
ja 0x6d3f
movl $0x9, %eax
cmpl $0x1ff, %edi            # imm = 0x1FF
ja 0x6d3f
movl $0x8, %eax
cmpl $0xff, %edi
ja 0x6d3f
movl $0x7, %eax
cmpl $0x7f, %edi
ja 0x6d3f
movl $0x6, %eax
cmpl $0x3f, %edi
ja 0x6d3f
movl $0x5, %eax
cmpl $0x1f, %edi
ja 0x6d3f
movl $0x4, %eax
cmpl $0xf, %edi
ja 0x6d3f
movl $0x3, %eax
cmpl $0x7, %edi
ja 0x6d3f
cmpl $0x4, %edi
movl $0x2, %eax
sbbl $0x0, %eax
retq
movl $0x1f, %eax
retq