#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int CHAR_BIT;
unsigned lg(unsigned int v) {
  unsigned r = 0;
  if (((((sizeof(unsigned int) * CHAR_BIT) + (1 << (1)) - 1) >> (1)) != 1) &&
      (v & ((((unsigned int)1
              << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (1)) - 1) >>
                  (1))) -
             1)
            << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (1)) - 1) >> (1)))))
    v >>= (((sizeof(unsigned int) * CHAR_BIT) + (1 << (1)) - 1) >> (1)),
        r += (((sizeof(unsigned int) * CHAR_BIT) + (1 << (1)) - 1) >> (1));
  if (((((sizeof(unsigned int) * CHAR_BIT) + (1 << (2)) - 1) >> (2)) != 1) &&
      (v & ((((unsigned int)1
              << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (2)) - 1) >>
                  (2))) -
             1)
            << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (2)) - 1) >> (2)))))
    v >>= (((sizeof(unsigned int) * CHAR_BIT) + (1 << (2)) - 1) >> (2)),
        r += (((sizeof(unsigned int) * CHAR_BIT) + (1 << (2)) - 1) >> (2));
  if (((((sizeof(unsigned int) * CHAR_BIT) + (1 << (3)) - 1) >> (3)) != 1) &&
      (v & ((((unsigned int)1
              << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (3)) - 1) >>
                  (3))) -
             1)
            << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (3)) - 1) >> (3)))))
    v >>= (((sizeof(unsigned int) * CHAR_BIT) + (1 << (3)) - 1) >> (3)),
        r += (((sizeof(unsigned int) * CHAR_BIT) + (1 << (3)) - 1) >> (3));
  if (((((sizeof(unsigned int) * CHAR_BIT) + (1 << (4)) - 1) >> (4)) != 1) &&
      (v & ((((unsigned int)1
              << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (4)) - 1) >>
                  (4))) -
             1)
            << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (4)) - 1) >> (4)))))
    v >>= (((sizeof(unsigned int) * CHAR_BIT) + (1 << (4)) - 1) >> (4)),
        r += (((sizeof(unsigned int) * CHAR_BIT) + (1 << (4)) - 1) >> (4));
  if (((((sizeof(unsigned int) * CHAR_BIT) + (1 << (5)) - 1) >> (5)) != 1) &&
      (v & ((((unsigned int)1
              << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (5)) - 1) >>
                  (5))) -
             1)
            << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (5)) - 1) >> (5)))))
    v >>= (((sizeof(unsigned int) * CHAR_BIT) + (1 << (5)) - 1) >> (5)),
        r += (((sizeof(unsigned int) * CHAR_BIT) + (1 << (5)) - 1) >> (5));
  if (((((sizeof(unsigned int) * CHAR_BIT) + (1 << (6)) - 1) >> (6)) != 1) &&
      (v & ((((unsigned int)1
              << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (6)) - 1) >>
                  (6))) -
             1)
            << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (6)) - 1) >> (6)))))
    v >>= (((sizeof(unsigned int) * CHAR_BIT) + (1 << (6)) - 1) >> (6)),
        r += (((sizeof(unsigned int) * CHAR_BIT) + (1 << (6)) - 1) >> (6));
  if (((((sizeof(unsigned int) * CHAR_BIT) + (1 << (7)) - 1) >> (7)) != 1) &&
      (v & ((((unsigned int)1
              << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (7)) - 1) >>
                  (7))) -
             1)
            << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (7)) - 1) >> (7)))))
    v >>= (((sizeof(unsigned int) * CHAR_BIT) + (1 << (7)) - 1) >> (7)),
        r += (((sizeof(unsigned int) * CHAR_BIT) + (1 << (7)) - 1) >> (7));
  if (((((sizeof(unsigned int) * CHAR_BIT) + (1 << (8)) - 1) >> (8)) != 1) &&
      (v & ((((unsigned int)1
              << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (8)) - 1) >>
                  (8))) -
             1)
            << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (8)) - 1) >> (8)))))
    v >>= (((sizeof(unsigned int) * CHAR_BIT) + (1 << (8)) - 1) >> (8)),
        r += (((sizeof(unsigned int) * CHAR_BIT) + (1 << (8)) - 1) >> (8));
  if (((((sizeof(unsigned int) * CHAR_BIT) + (1 << (9)) - 1) >> (9)) != 1) &&
      (v & ((((unsigned int)1
              << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (9)) - 1) >>
                  (9))) -
             1)
            << (((sizeof(unsigned int) * CHAR_BIT) + (1 << (9)) - 1) >> (9)))))
    v >>= (((sizeof(unsigned int) * CHAR_BIT) + (1 << (9)) - 1) >> (9)),
        r += (((sizeof(unsigned int) * CHAR_BIT) + (1 << (9)) - 1) >> (9));
  if (v & 2)
    ++r;
  return r;
}


x86 assembly (clang, -O0):
<lg>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
movl   $0x0,-0x8(%rbp)
mov    0x2ecb(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
add    $0x2,%rax
sub    $0x1,%rax
shr    $0x1,%rax
cmp    $0x1,%rax
je     11c7 <lg+0xc7>
mov    -0x4(%rbp),%eax
mov    0x2ea4(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x2,%rcx
sub    $0x1,%rcx
shr    $0x1,%rcx
mov    $0x1,%edx
shl    %cl,%edx
sub    $0x1,%edx
mov    0x2e80(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x2,%rcx
sub    $0x1,%rcx
shr    $0x1,%rcx
shl    %cl,%edx
mov    %edx,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     11c7 <lg+0xc7>
mov    0x2e57(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x2,%rcx
sub    $0x1,%rcx
shr    $0x1,%rcx
mov    -0x4(%rbp),%eax
shr    %cl,%eax
mov    %eax,-0x4(%rbp)
mov    0x2e35(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x2,%rcx
sub    $0x1,%rcx
shr    $0x1,%rcx
mov    -0x8(%rbp),%eax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    0x2e12(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
add    $0x4,%rax
sub    $0x1,%rax
shr    $0x2,%rax
cmp    $0x1,%rax
je     1280 <lg+0x180>
mov    -0x4(%rbp),%eax
mov    0x2deb(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x4,%rcx
sub    $0x1,%rcx
shr    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
sub    $0x1,%edx
mov    0x2dc7(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x4,%rcx
sub    $0x1,%rcx
shr    $0x2,%rcx
shl    %cl,%edx
mov    %edx,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1280 <lg+0x180>
mov    0x2d9e(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x4,%rcx
sub    $0x1,%rcx
shr    $0x2,%rcx
mov    -0x4(%rbp),%eax
shr    %cl,%eax
mov    %eax,-0x4(%rbp)
mov    0x2d7c(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x4,%rcx
sub    $0x1,%rcx
shr    $0x2,%rcx
mov    -0x8(%rbp),%eax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    0x2d59(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
add    $0x8,%rax
sub    $0x1,%rax
shr    $0x3,%rax
cmp    $0x1,%rax
je     1339 <lg+0x239>
mov    -0x4(%rbp),%eax
mov    0x2d32(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x8,%rcx
sub    $0x1,%rcx
shr    $0x3,%rcx
mov    $0x1,%edx
shl    %cl,%edx
sub    $0x1,%edx
mov    0x2d0e(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x8,%rcx
sub    $0x1,%rcx
shr    $0x3,%rcx
shl    %cl,%edx
mov    %edx,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1339 <lg+0x239>
mov    0x2ce5(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x8,%rcx
sub    $0x1,%rcx
shr    $0x3,%rcx
mov    -0x4(%rbp),%eax
shr    %cl,%eax
mov    %eax,-0x4(%rbp)
mov    0x2cc3(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x8,%rcx
sub    $0x1,%rcx
shr    $0x3,%rcx
mov    -0x8(%rbp),%eax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    0x2ca0(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
add    $0x10,%rax
sub    $0x1,%rax
shr    $0x4,%rax
cmp    $0x1,%rax
je     13f2 <lg+0x2f2>
mov    -0x4(%rbp),%eax
mov    0x2c79(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x10,%rcx
sub    $0x1,%rcx
shr    $0x4,%rcx
mov    $0x1,%edx
shl    %cl,%edx
sub    $0x1,%edx
mov    0x2c55(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x10,%rcx
sub    $0x1,%rcx
shr    $0x4,%rcx
shl    %cl,%edx
mov    %edx,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     13f2 <lg+0x2f2>
mov    0x2c2c(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x10,%rcx
sub    $0x1,%rcx
shr    $0x4,%rcx
mov    -0x4(%rbp),%eax
shr    %cl,%eax
mov    %eax,-0x4(%rbp)
mov    0x2c0a(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x10,%rcx
sub    $0x1,%rcx
shr    $0x4,%rcx
mov    -0x8(%rbp),%eax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    0x2be7(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
add    $0x20,%rax
sub    $0x1,%rax
shr    $0x5,%rax
cmp    $0x1,%rax
je     14ab <lg+0x3ab>
mov    -0x4(%rbp),%eax
mov    0x2bc0(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x20,%rcx
sub    $0x1,%rcx
shr    $0x5,%rcx
mov    $0x1,%edx
shl    %cl,%edx
sub    $0x1,%edx
mov    0x2b9c(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x20,%rcx
sub    $0x1,%rcx
shr    $0x5,%rcx
shl    %cl,%edx
mov    %edx,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     14ab <lg+0x3ab>
mov    0x2b73(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x20,%rcx
sub    $0x1,%rcx
shr    $0x5,%rcx
mov    -0x4(%rbp),%eax
shr    %cl,%eax
mov    %eax,-0x4(%rbp)
mov    0x2b51(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x20,%rcx
sub    $0x1,%rcx
shr    $0x5,%rcx
mov    -0x8(%rbp),%eax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    0x2b2e(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
add    $0x40,%rax
sub    $0x1,%rax
shr    $0x6,%rax
cmp    $0x1,%rax
je     1564 <lg+0x464>
mov    -0x4(%rbp),%eax
mov    0x2b07(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x40,%rcx
sub    $0x1,%rcx
shr    $0x6,%rcx
mov    $0x1,%edx
shl    %cl,%edx
sub    $0x1,%edx
mov    0x2ae3(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x40,%rcx
sub    $0x1,%rcx
shr    $0x6,%rcx
shl    %cl,%edx
mov    %edx,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1564 <lg+0x464>
mov    0x2aba(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x40,%rcx
sub    $0x1,%rcx
shr    $0x6,%rcx
mov    -0x4(%rbp),%eax
shr    %cl,%eax
mov    %eax,-0x4(%rbp)
mov    0x2a98(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x40,%rcx
sub    $0x1,%rcx
shr    $0x6,%rcx
mov    -0x8(%rbp),%eax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    0x2a75(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
add    $0x80,%rax
sub    $0x1,%rax
shr    $0x7,%rax
cmp    $0x1,%rax
je     162b <lg+0x52b>
mov    -0x4(%rbp),%eax
mov    0x2a4c(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x80,%rcx
sub    $0x1,%rcx
shr    $0x7,%rcx
mov    $0x1,%edx
shl    %cl,%edx
sub    $0x1,%edx
mov    0x2a25(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x80,%rcx
sub    $0x1,%rcx
shr    $0x7,%rcx
shl    %cl,%edx
mov    %edx,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     162b <lg+0x52b>
mov    0x29f9(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x80,%rcx
sub    $0x1,%rcx
shr    $0x7,%rcx
mov    -0x4(%rbp),%eax
shr    %cl,%eax
mov    %eax,-0x4(%rbp)
mov    0x29d4(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x80,%rcx
sub    $0x1,%rcx
shr    $0x7,%rcx
mov    -0x8(%rbp),%eax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    0x29ae(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
add    $0x100,%rax
sub    $0x1,%rax
shr    $0x8,%rax
cmp    $0x1,%rax
je     16f2 <lg+0x5f2>
mov    -0x4(%rbp),%eax
mov    0x2985(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x100,%rcx
sub    $0x1,%rcx
shr    $0x8,%rcx
mov    $0x1,%edx
shl    %cl,%edx
sub    $0x1,%edx
mov    0x295e(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x100,%rcx
sub    $0x1,%rcx
shr    $0x8,%rcx
shl    %cl,%edx
mov    %edx,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     16f2 <lg+0x5f2>
mov    0x2932(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x100,%rcx
sub    $0x1,%rcx
shr    $0x8,%rcx
mov    -0x4(%rbp),%eax
shr    %cl,%eax
mov    %eax,-0x4(%rbp)
mov    0x290d(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x100,%rcx
sub    $0x1,%rcx
shr    $0x8,%rcx
mov    -0x8(%rbp),%eax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    0x28e7(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
add    $0x200,%rax
sub    $0x1,%rax
shr    $0x9,%rax
cmp    $0x1,%rax
je     17b9 <lg+0x6b9>
mov    -0x4(%rbp),%eax
mov    0x28be(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x200,%rcx
sub    $0x1,%rcx
shr    $0x9,%rcx
mov    $0x1,%edx
shl    %cl,%edx
sub    $0x1,%edx
mov    0x2897(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
add    $0x200,%rcx
sub    $0x1,%rcx
shr    $0x9,%rcx
shl    %cl,%edx
mov    %edx,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     17b9 <lg+0x6b9>
mov    0x286b(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x200,%rcx
sub    $0x1,%rcx
shr    $0x9,%rcx
mov    -0x4(%rbp),%eax
shr    %cl,%eax
mov    %eax,-0x4(%rbp)
mov    0x2846(%rip),%rax
movslq (%rax),%rcx
shl    $0x2,%rcx
add    $0x200,%rcx
sub    $0x1,%rcx
shr    $0x9,%rcx
mov    -0x8(%rbp),%eax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x4(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     17d1 <lg+0x6d1>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<lg>:
mov    0x2ed9(%rip),%rax
movslq (%rax),%rdx
lea    (%rdx,%rdx,1),%ecx
mov    $0xffffffff,%eax
shl    %cl,%eax
not    %eax
shl    %cl,%eax
and    %edi,%eax
cmovne %ecx,%eax
mov    %eax,%ecx
shr    %cl,%edi
mov    $0xffffffff,%esi
movabs $0x3fffffffffffffff,%rcx
ff ff 3f
and    %rdx,%rcx
cmp    $0x1,%rcx
je     114b <lg+0x4b>
mov    %edx,%ecx
shl    %cl,%esi
not    %esi
shl    %cl,%esi
test   %esi,%edi
je     114b <lg+0x4b>
mov    %edx,%ecx
shr    %cl,%edi
add    %edx,%eax
lea    0x7(,%rdx,4),%rcx
shl    $0x2,%rdx
shr    $0x3,%rcx
cmp    $0x1,%rcx
je     1174 <lg+0x74>
mov    $0xffffffff,%esi
shl    %cl,%esi
not    %esi
shl    %cl,%esi
test   %esi,%edi
je     1174 <lg+0x74>
shr    %cl,%edi
add    %ecx,%eax
lea    0xf(%rdx),%rcx
shr    $0x4,%rcx
cmp    $0x1,%rcx
je     1195 <lg+0x95>
mov    $0xffffffff,%esi
shl    %cl,%esi
not    %esi
shl    %cl,%esi
test   %esi,%edi
je     1195 <lg+0x95>
shr    %cl,%edi
add    %ecx,%eax
lea    0x1f(%rdx),%rcx
shr    $0x5,%rcx
cmp    $0x1,%rcx
je     11b6 <lg+0xb6>
mov    $0xffffffff,%esi
shl    %cl,%esi
not    %esi
shl    %cl,%esi
test   %esi,%edi
je     11b6 <lg+0xb6>
shr    %cl,%edi
add    %ecx,%eax
lea    0x3f(%rdx),%rcx
shr    $0x6,%rcx
cmp    $0x1,%rcx
je     11d7 <lg+0xd7>
mov    $0xffffffff,%esi
shl    %cl,%esi
not    %esi
shl    %cl,%esi
test   %esi,%edi
je     11d7 <lg+0xd7>
shr    %cl,%edi
add    %ecx,%eax
lea    0x7f(%rdx),%rcx
shr    $0x7,%rcx
cmp    $0x1,%rcx
je     11f8 <lg+0xf8>
mov    $0xffffffff,%esi
shl    %cl,%esi
not    %esi
shl    %cl,%esi
test   %esi,%edi
je     11f8 <lg+0xf8>
shr    %cl,%edi
add    %ecx,%eax
lea    0xff(%rdx),%rcx
shr    $0x8,%rcx
cmp    $0x1,%rcx
je     121c <lg+0x11c>
mov    $0xffffffff,%esi
shl    %cl,%esi
not    %esi
shl    %cl,%esi
test   %esi,%edi
je     121c <lg+0x11c>
shr    %cl,%edi
add    %ecx,%eax
add    $0x1ff,%rdx
shr    $0x9,%rdx
cmp    $0x1,%rdx
je     1244 <lg+0x144>
mov    $0xffffffff,%esi
mov    %edx,%ecx
shl    %cl,%esi
not    %esi
shl    %cl,%esi
test   %esi,%edi
je     1244 <lg+0x144>
mov    %edx,%ecx
shr    %cl,%edi
add    %edx,%eax
shr    %edi
and    $0x1,%edi
add    %eax,%edi
mov    %edi,%eax
ret

LLVM IR (-O0):
@CHAR_BIT = global i32 0
define i32 @lg(i32 %0) {
%2 = alloca i32
%3 = alloca i32
store i32 %0, i32* %2
store i32 0, i32* %3
%4 = load i32, i32* @CHAR_BIT
%5 = sext i32 %4 to i64
%6 = mul i64 4, %5
%7 = add i64 %6, 2
%8 = sub i64 %7, 1
%9 = lshr i64 %8, 1
%10 = icmp ne i64 %9, 1
br i1 %10, label %11, label %52
11: ; preds = %1
%12 = load i32, i32* %2
%13 = load i32, i32* @CHAR_BIT
%14 = sext i32 %13 to i64
%15 = mul i64 4, %14
%16 = add i64 %15, 2
%17 = sub i64 %16, 1
%18 = lshr i64 %17, 1
%19 = trunc i64 %18 to i32
%20 = shl i32 1, %19
%21 = sub i32 %20, 1
%22 = load i32, i32* @CHAR_BIT
%23 = sext i32 %22 to i64
%24 = mul i64 4, %23
%25 = add i64 %24, 2
%26 = sub i64 %25, 1
%27 = lshr i64 %26, 1
%28 = trunc i64 %27 to i32
%29 = shl i32 %21, %28
%30 = and i32 %12, %29
%31 = icmp ne i32 %30, 0
br i1 %31, label %32, label %52
32: ; preds = %11
%33 = load i32, i32* @CHAR_BIT
%34 = sext i32 %33 to i64
%35 = mul i64 4, %34
%36 = add i64 %35, 2
%37 = sub i64 %36, 1
%38 = lshr i64 %37, 1
%39 = load i32, i32* %2
%40 = trunc i64 %38 to i32
%41 = lshr i32 %39, %40
store i32 %41, i32* %2
%42 = load i32, i32* @CHAR_BIT
%43 = sext i32 %42 to i64
%44 = mul i64 4, %43
%45 = add i64 %44, 2
%46 = sub i64 %45, 1
%47 = lshr i64 %46, 1
%48 = load i32, i32* %3
%49 = zext i32 %48 to i64
%50 = add i64 %49, %47
%51 = trunc i64 %50 to i32
store i32 %51, i32* %3
br label %52
52: ; preds = %32, %11, %1
%53 = load i32, i32* @CHAR_BIT
%54 = sext i32 %53 to i64
%55 = mul i64 4, %54
%56 = add i64 %55, 4
%57 = sub i64 %56, 1
%58 = lshr i64 %57, 2
%59 = icmp ne i64 %58, 1
br i1 %59, label %60, label %101
60: ; preds = %52
%61 = load i32, i32* %2
%62 = load i32, i32* @CHAR_BIT
%63 = sext i32 %62 to i64
%64 = mul i64 4, %63
%65 = add i64 %64, 4
%66 = sub i64 %65, 1
%67 = lshr i64 %66, 2
%68 = trunc i64 %67 to i32
%69 = shl i32 1, %68
%70 = sub i32 %69, 1
%71 = load i32, i32* @CHAR_BIT
%72 = sext i32 %71 to i64
%73 = mul i64 4, %72
%74 = add i64 %73, 4
%75 = sub i64 %74, 1
%76 = lshr i64 %75, 2
%77 = trunc i64 %76 to i32
%78 = shl i32 %70, %77
%79 = and i32 %61, %78
%80 = icmp ne i32 %79, 0
br i1 %80, label %81, label %101
81: ; preds = %60
%82 = load i32, i32* @CHAR_BIT
%83 = sext i32 %82 to i64
%84 = mul i64 4, %83
%85 = add i64 %84, 4
%86 = sub i64 %85, 1
%87 = lshr i64 %86, 2
%88 = load i32, i32* %2
%89 = trunc i64 %87 to i32
%90 = lshr i32 %88, %89
store i32 %90, i32* %2
%91 = load i32, i32* @CHAR_BIT
%92 = sext i32 %91 to i64
%93 = mul i64 4, %92
%94 = add i64 %93, 4
%95 = sub i64 %94, 1
%96 = lshr i64 %95, 2
%97 = load i32, i32* %3
%98 = zext i32 %97 to i64
%99 = add i64 %98, %96
%100 = trunc i64 %99 to i32
store i32 %100, i32* %3
br label %101
101: ; preds = %81, %60, %52
%102 = load i32, i32* @CHAR_BIT
%103 = sext i32 %102 to i64
%104 = mul i64 4, %103
%105 = add i64 %104, 8
%106 = sub i64 %105, 1
%107 = lshr i64 %106, 3
%108 = icmp ne i64 %107, 1
br i1 %108, label %109, label %150
109: ; preds = %101
%110 = load i32, i32* %2
%111 = load i32, i32* @CHAR_BIT
%112 = sext i32 %111 to i64
%113 = mul i64 4, %112
%114 = add i64 %113, 8
%115 = sub i64 %114, 1
%116 = lshr i64 %115, 3
%117 = trunc i64 %116 to i32
%118 = shl i32 1, %117
%119 = sub i32 %118, 1
%120 = load i32, i32* @CHAR_BIT
%121 = sext i32 %120 to i64
%122 = mul i64 4, %121
%123 = add i64 %122, 8
%124 = sub i64 %123, 1
%125 = lshr i64 %124, 3
%126 = trunc i64 %125 to i32
%127 = shl i32 %119, %126
%128 = and i32 %110, %127
%129 = icmp ne i32 %128, 0
br i1 %129, label %130, label %150
130: ; preds = %109
%131 = load i32, i32* @CHAR_BIT
%132 = sext i32 %131 to i64
%133 = mul i64 4, %132
%134 = add i64 %133, 8
%135 = sub i64 %134, 1
%136 = lshr i64 %135, 3
%137 = load i32, i32* %2
%138 = trunc i64 %136 to i32
%139 = lshr i32 %137, %138
store i32 %139, i32* %2
%140 = load i32, i32* @CHAR_BIT
%141 = sext i32 %140 to i64
%142 = mul i64 4, %141
%143 = add i64 %142, 8
%144 = sub i64 %143, 1
%145 = lshr i64 %144, 3
%146 = load i32, i32* %3
%147 = zext i32 %146 to i64
%148 = add i64 %147, %145
%149 = trunc i64 %148 to i32
store i32 %149, i32* %3
br label %150
150: ; preds = %130, %109, %101
%151 = load i32, i32* @CHAR_BIT
%152 = sext i32 %151 to i64
%153 = mul i64 4, %152
%154 = add i64 %153, 16
%155 = sub i64 %154, 1
%156 = lshr i64 %155, 4
%157 = icmp ne i64 %156, 1
br i1 %157, label %158, label %199
158: ; preds = %150
%159 = load i32, i32* %2
%160 = load i32, i32* @CHAR_BIT
%161 = sext i32 %160 to i64
%162 = mul i64 4, %161
%163 = add i64 %162, 16
%164 = sub i64 %163, 1
%165 = lshr i64 %164, 4
%166 = trunc i64 %165 to i32
%167 = shl i32 1, %166
%168 = sub i32 %167, 1
%169 = load i32, i32* @CHAR_BIT
%170 = sext i32 %169 to i64
%171 = mul i64 4, %170
%172 = add i64 %171, 16
%173 = sub i64 %172, 1
%174 = lshr i64 %173, 4
%175 = trunc i64 %174 to i32
%176 = shl i32 %168, %175
%177 = and i32 %159, %176
%178 = icmp ne i32 %177, 0
br i1 %178, label %179, label %199
179: ; preds = %158
%180 = load i32, i32* @CHAR_BIT
%181 = sext i32 %180 to i64
%182 = mul i64 4, %181
%183 = add i64 %182, 16
%184 = sub i64 %183, 1
%185 = lshr i64 %184, 4
%186 = load i32, i32* %2
%187 = trunc i64 %185 to i32
%188 = lshr i32 %186, %187
store i32 %188, i32* %2
%189 = load i32, i32* @CHAR_BIT
%190 = sext i32 %189 to i64
%191 = mul i64 4, %190
%192 = add i64 %191, 16
%193 = sub i64 %192, 1
%194 = lshr i64 %193, 4
%195 = load i32, i32* %3
%196 = zext i32 %195 to i64
%197 = add i64 %196, %194
%198 = trunc i64 %197 to i32
store i32 %198, i32* %3
br label %199
199: ; preds = %179, %158, %150
%200 = load i32, i32* @CHAR_BIT
%201 = sext i32 %200 to i64
%202 = mul i64 4, %201
%203 = add i64 %202, 32
%204 = sub i64 %203, 1
%205 = lshr i64 %204, 5
%206 = icmp ne i64 %205, 1
br i1 %206, label %207, label %248
207: ; preds = %199
%208 = load i32, i32* %2
%209 = load i32, i32* @CHAR_BIT
%210 = sext i32 %209 to i64
%211 = mul i64 4, %210
%212 = add i64 %211, 32
%213 = sub i64 %212, 1
%214 = lshr i64 %213, 5
%215 = trunc i64 %214 to i32
%216 = shl i32 1, %215
%217 = sub i32 %216, 1
%218 = load i32, i32* @CHAR_BIT
%219 = sext i32 %218 to i64
%220 = mul i64 4, %219
%221 = add i64 %220, 32
%222 = sub i64 %221, 1
%223 = lshr i64 %222, 5
%224 = trunc i64 %223 to i32
%225 = shl i32 %217, %224
%226 = and i32 %208, %225
%227 = icmp ne i32 %226, 0
br i1 %227, label %228, label %248
228: ; preds = %207
%229 = load i32, i32* @CHAR_BIT
%230 = sext i32 %229 to i64
%231 = mul i64 4, %230
%232 = add i64 %231, 32
%233 = sub i64 %232, 1
%234 = lshr i64 %233, 5
%235 = load i32, i32* %2
%236 = trunc i64 %234 to i32
%237 = lshr i32 %235, %236
store i32 %237, i32* %2
%238 = load i32, i32* @CHAR_BIT
%239 = sext i32 %238 to i64
%240 = mul i64 4, %239
%241 = add i64 %240, 32
%242 = sub i64 %241, 1
%243 = lshr i64 %242, 5
%244 = load i32, i32* %3
%245 = zext i32 %244 to i64
%246 = add i64 %245, %243
%247 = trunc i64 %246 to i32
store i32 %247, i32* %3
br label %248
248: ; preds = %228, %207, %199
%249 = load i32, i32* @CHAR_BIT
%250 = sext i32 %249 to i64
%251 = mul i64 4, %250
%252 = add i64 %251, 64
%253 = sub i64 %252, 1
%254 = lshr i64 %253, 6
%255 = icmp ne i64 %254, 1
br i1 %255, label %256, label %297
256: ; preds = %248
%257 = load i32, i32* %2
%258 = load i32, i32* @CHAR_BIT
%259 = sext i32 %258 to i64
%260 = mul i64 4, %259
%261 = add i64 %260, 64
%262 = sub i64 %261, 1
%263 = lshr i64 %262, 6
%264 = trunc i64 %263 to i32
%265 = shl i32 1, %264
%266 = sub i32 %265, 1
%267 = load i32, i32* @CHAR_BIT
%268 = sext i32 %267 to i64
%269 = mul i64 4, %268
%270 = add i64 %269, 64
%271 = sub i64 %270, 1
%272 = lshr i64 %271, 6
%273 = trunc i64 %272 to i32
%274 = shl i32 %266, %273
%275 = and i32 %257, %274
%276 = icmp ne i32 %275, 0
br i1 %276, label %277, label %297
277: ; preds = %256
%278 = load i32, i32* @CHAR_BIT
%279 = sext i32 %278 to i64
%280 = mul i64 4, %279
%281 = add i64 %280, 64
%282 = sub i64 %281, 1
%283 = lshr i64 %282, 6
%284 = load i32, i32* %2
%285 = trunc i64 %283 to i32
%286 = lshr i32 %284, %285
store i32 %286, i32* %2
%287 = load i32, i32* @CHAR_BIT
%288 = sext i32 %287 to i64
%289 = mul i64 4, %288
%290 = add i64 %289, 64
%291 = sub i64 %290, 1
%292 = lshr i64 %291, 6
%293 = load i32, i32* %3
%294 = zext i32 %293 to i64
%295 = add i64 %294, %292
%296 = trunc i64 %295 to i32
store i32 %296, i32* %3
br label %297
297: ; preds = %277, %256, %248
%298 = load i32, i32* @CHAR_BIT
%299 = sext i32 %298 to i64
%300 = mul i64 4, %299
%301 = add i64 %300, 128
%302 = sub i64 %301, 1
%303 = lshr i64 %302, 7
%304 = icmp ne i64 %303, 1
br i1 %304, label %305, label %346
305: ; preds = %297
%306 = load i32, i32* %2
%307 = load i32, i32* @CHAR_BIT
%308 = sext i32 %307 to i64
%309 = mul i64 4, %308
%310 = add i64 %309, 128
%311 = sub i64 %310, 1
%312 = lshr i64 %311, 7
%313 = trunc i64 %312 to i32
%314 = shl i32 1, %313
%315 = sub i32 %314, 1
%316 = load i32, i32* @CHAR_BIT
%317 = sext i32 %316 to i64
%318 = mul i64 4, %317
%319 = add i64 %318, 128
%320 = sub i64 %319, 1
%321 = lshr i64 %320, 7
%322 = trunc i64 %321 to i32
%323 = shl i32 %315, %322
%324 = and i32 %306, %323
%325 = icmp ne i32 %324, 0
br i1 %325, label %326, label %346
326: ; preds = %305
%327 = load i32, i32* @CHAR_BIT
%328 = sext i32 %327 to i64
%329 = mul i64 4, %328
%330 = add i64 %329, 128
%331 = sub i64 %330, 1
%332 = lshr i64 %331, 7
%333 = load i32, i32* %2
%334 = trunc i64 %332 to i32
%335 = lshr i32 %333, %334
store i32 %335, i32* %2
%336 = load i32, i32* @CHAR_BIT
%337 = sext i32 %336 to i64
%338 = mul i64 4, %337
%339 = add i64 %338, 128
%340 = sub i64 %339, 1
%341 = lshr i64 %340, 7
%342 = load i32, i32* %3
%343 = zext i32 %342 to i64
%344 = add i64 %343, %341
%345 = trunc i64 %344 to i32
store i32 %345, i32* %3
br label %346
346: ; preds = %326, %305, %297
%347 = load i32, i32* @CHAR_BIT
%348 = sext i32 %347 to i64
%349 = mul i64 4, %348
%350 = add i64 %349, 256
%351 = sub i64 %350, 1
%352 = lshr i64 %351, 8
%353 = icmp ne i64 %352, 1
br i1 %353, label %354, label %395
354: ; preds = %346
%355 = load i32, i32* %2
%356 = load i32, i32* @CHAR_BIT
%357 = sext i32 %356 to i64
%358 = mul i64 4, %357
%359 = add i64 %358, 256
%360 = sub i64 %359, 1
%361 = lshr i64 %360, 8
%362 = trunc i64 %361 to i32
%363 = shl i32 1, %362
%364 = sub i32 %363, 1
%365 = load i32, i32* @CHAR_BIT
%366 = sext i32 %365 to i64
%367 = mul i64 4, %366
%368 = add i64 %367, 256
%369 = sub i64 %368, 1
%370 = lshr i64 %369, 8
%371 = trunc i64 %370 to i32
%372 = shl i32 %364, %371
%373 = and i32 %355, %372
%374 = icmp ne i32 %373, 0
br i1 %374, label %375, label %395
375: ; preds = %354
%376 = load i32, i32* @CHAR_BIT
%377 = sext i32 %376 to i64
%378 = mul i64 4, %377
%379 = add i64 %378, 256
%380 = sub i64 %379, 1
%381 = lshr i64 %380, 8
%382 = load i32, i32* %2
%383 = trunc i64 %381 to i32
%384 = lshr i32 %382, %383
store i32 %384, i32* %2
%385 = load i32, i32* @CHAR_BIT
%386 = sext i32 %385 to i64
%387 = mul i64 4, %386
%388 = add i64 %387, 256
%389 = sub i64 %388, 1
%390 = lshr i64 %389, 8
%391 = load i32, i32* %3
%392 = zext i32 %391 to i64
%393 = add i64 %392, %390
%394 = trunc i64 %393 to i32
store i32 %394, i32* %3
br label %395
395: ; preds = %375, %354, %346
%396 = load i32, i32* @CHAR_BIT
%397 = sext i32 %396 to i64
%398 = mul i64 4, %397
%399 = add i64 %398, 512
%400 = sub i64 %399, 1
%401 = lshr i64 %400, 9
%402 = icmp ne i64 %401, 1
br i1 %402, label %403, label %444
403: ; preds = %395
%404 = load i32, i32* %2
%405 = load i32, i32* @CHAR_BIT
%406 = sext i32 %405 to i64
%407 = mul i64 4, %406
%408 = add i64 %407, 512
%409 = sub i64 %408, 1
%410 = lshr i64 %409, 9
%411 = trunc i64 %410 to i32
%412 = shl i32 1, %411
%413 = sub i32 %412, 1
%414 = load i32, i32* @CHAR_BIT
%415 = sext i32 %414 to i64
%416 = mul i64 4, %415
%417 = add i64 %416, 512
%418 = sub i64 %417, 1
%419 = lshr i64 %418, 9
%420 = trunc i64 %419 to i32
%421 = shl i32 %413, %420
%422 = and i32 %404, %421
%423 = icmp ne i32 %422, 0
br i1 %423, label %424, label %444
424: ; preds = %403
%425 = load i32, i32* @CHAR_BIT
%426 = sext i32 %425 to i64
%427 = mul i64 4, %426
%428 = add i64 %427, 512
%429 = sub i64 %428, 1
%430 = lshr i64 %429, 9
%431 = load i32, i32* %2
%432 = trunc i64 %430 to i32
%433 = lshr i32 %431, %432
store i32 %433, i32* %2
%434 = load i32, i32* @CHAR_BIT
%435 = sext i32 %434 to i64
%436 = mul i64 4, %435
%437 = add i64 %436, 512
%438 = sub i64 %437, 1
%439 = lshr i64 %438, 9
%440 = load i32, i32* %3
%441 = zext i32 %440 to i64
%442 = add i64 %441, %439
%443 = trunc i64 %442 to i32
store i32 %443, i32* %3
br label %444
444: ; preds = %424, %403, %395
%445 = load i32, i32* %2
%446 = and i32 %445, 2
%447 = icmp ne i32 %446, 0
br i1 %447, label %448, label %451
448: ; preds = %444
%449 = load i32, i32* %3
%450 = add i32 %449, 1
store i32 %450, i32* %3
br label %451
451: ; preds = %448, %444
%452 = load i32, i32* %3
ret i32 %452
}

LLVM IR (-O2):
@CHAR_BIT = global i32 0
define i32 @lg(i32 %0) {
%2 = load i32, i32* @CHAR_BIT
%3 = shl i32 %2, 1
%4 = shl nsw i32 -1, %3
%5 = xor i32 %4, -1
%6 = shl i32 %5, %3
%7 = and i32 %6, %0
%8 = icmp eq i32 %7, 0
%9 = select i1 %8, i32 0, i32 %3
%10 = lshr i32 %0, %9
%11 = sext i32 %2 to i64
%12 = and i64 %11, 4611686018427387903
%13 = icmp eq i64 %12, 1
br i1 %13, label %23, label %14
14: ; preds = %1
%15 = shl nsw i32 -1, %2
%16 = xor i32 %15, -1
%17 = shl i32 %16, %2
%18 = and i32 %10, %17
%19 = icmp eq i32 %18, 0
br i1 %19, label %23, label %20
20: ; preds = %14
%21 = lshr i32 %10, %2
%22 = add i32 %9, %2
br label %23
23: ; preds = %20, %14, %1
%24 = phi i32 [ %21, %20 ], [ %10, %14 ], [ %10, %1 ]
%25 = phi i32 [ %22, %20 ], [ %9, %14 ], [ %9, %1 ]
%26 = shl nsw i64 %11, 2
%27 = add nsw i64 %26, 7
%28 = lshr i64 %27, 3
%29 = icmp eq i64 %28, 1
br i1 %29, label %40, label %30
30: ; preds = %23
%31 = trunc i64 %28 to i32
%32 = shl nsw i32 -1, %31
%33 = xor i32 %32, -1
%34 = shl i32 %33, %31
%35 = and i32 %24, %34
%36 = icmp eq i32 %35, 0
br i1 %36, label %40, label %37
37: ; preds = %30
%38 = lshr i32 %24, %31
%39 = add i32 %25, %31
br label %40
40: ; preds = %37, %30, %23
%41 = phi i32 [ %38, %37 ], [ %24, %30 ], [ %24, %23 ]
%42 = phi i32 [ %39, %37 ], [ %25, %30 ], [ %25, %23 ]
%43 = add nsw i64 %26, 15
%44 = lshr i64 %43, 4
%45 = icmp eq i64 %44, 1
br i1 %45, label %56, label %46
46: ; preds = %40
%47 = trunc i64 %44 to i32
%48 = shl nsw i32 -1, %47
%49 = xor i32 %48, -1
%50 = shl i32 %49, %47
%51 = and i32 %41, %50
%52 = icmp eq i32 %51, 0
br i1 %52, label %56, label %53
53: ; preds = %46
%54 = lshr i32 %41, %47
%55 = add i32 %42, %47
br label %56
56: ; preds = %53, %46, %40
%57 = phi i32 [ %54, %53 ], [ %41, %46 ], [ %41, %40 ]
%58 = phi i32 [ %55, %53 ], [ %42, %46 ], [ %42, %40 ]
%59 = add nsw i64 %26, 31
%60 = lshr i64 %59, 5
%61 = icmp eq i64 %60, 1
br i1 %61, label %72, label %62
62: ; preds = %56
%63 = trunc i64 %60 to i32
%64 = shl nsw i32 -1, %63
%65 = xor i32 %64, -1
%66 = shl i32 %65, %63
%67 = and i32 %57, %66
%68 = icmp eq i32 %67, 0
br i1 %68, label %72, label %69
69: ; preds = %62
%70 = lshr i32 %57, %63
%71 = add i32 %58, %63
br label %72
72: ; preds = %69, %62, %56
%73 = phi i32 [ %70, %69 ], [ %57, %62 ], [ %57, %56 ]
%74 = phi i32 [ %71, %69 ], [ %58, %62 ], [ %58, %56 ]
%75 = add nsw i64 %26, 63
%76 = lshr i64 %75, 6
%77 = icmp eq i64 %76, 1
br i1 %77, label %88, label %78
78: ; preds = %72
%79 = trunc i64 %76 to i32
%80 = shl nsw i32 -1, %79
%81 = xor i32 %80, -1
%82 = shl i32 %81, %79
%83 = and i32 %73, %82
%84 = icmp eq i32 %83, 0
br i1 %84, label %88, label %85
85: ; preds = %78
%86 = lshr i32 %73, %79
%87 = add i32 %74, %79
br label %88
88: ; preds = %85, %78, %72
%89 = phi i32 [ %86, %85 ], [ %73, %78 ], [ %73, %72 ]
%90 = phi i32 [ %87, %85 ], [ %74, %78 ], [ %74, %72 ]
%91 = add nsw i64 %26, 127
%92 = lshr i64 %91, 7
%93 = icmp eq i64 %92, 1
br i1 %93, label %104, label %94
94: ; preds = %88
%95 = trunc i64 %92 to i32
%96 = shl nsw i32 -1, %95
%97 = xor i32 %96, -1
%98 = shl i32 %97, %95
%99 = and i32 %89, %98
%100 = icmp eq i32 %99, 0
br i1 %100, label %104, label %101
101: ; preds = %94
%102 = lshr i32 %89, %95
%103 = add i32 %90, %95
br label %104
104: ; preds = %101, %94, %88
%105 = phi i32 [ %102, %101 ], [ %89, %94 ], [ %89, %88 ]
%106 = phi i32 [ %103, %101 ], [ %90, %94 ], [ %90, %88 ]
%107 = add nsw i64 %26, 255
%108 = lshr i64 %107, 8
%109 = icmp eq i64 %108, 1
br i1 %109, label %120, label %110
110: ; preds = %104
%111 = trunc i64 %108 to i32
%112 = shl nsw i32 -1, %111
%113 = xor i32 %112, -1
%114 = shl i32 %113, %111
%115 = and i32 %105, %114
%116 = icmp eq i32 %115, 0
br i1 %116, label %120, label %117
117: ; preds = %110
%118 = lshr i32 %105, %111
%119 = add i32 %106, %111
br label %120
120: ; preds = %117, %110, %104
%121 = phi i32 [ %118, %117 ], [ %105, %110 ], [ %105, %104 ]
%122 = phi i32 [ %119, %117 ], [ %106, %110 ], [ %106, %104 ]
%123 = add nsw i64 %26, 511
%124 = lshr i64 %123, 9
%125 = icmp eq i64 %124, 1
br i1 %125, label %136, label %126
126: ; preds = %120
%127 = trunc i64 %124 to i32
%128 = shl nsw i32 -1, %127
%129 = xor i32 %128, -1
%130 = shl i32 %129, %127
%131 = and i32 %121, %130
%132 = icmp eq i32 %131, 0
br i1 %132, label %136, label %133
133: ; preds = %126
%134 = lshr i32 %121, %127
%135 = add i32 %122, %127
br label %136
136: ; preds = %133, %126, %120
%137 = phi i32 [ %134, %133 ], [ %121, %126 ], [ %121, %120 ]
%138 = phi i32 [ %135, %133 ], [ %122, %126 ], [ %122, %120 ]
%139 = lshr i32 %137, 1
%140 = and i32 %139, 1
%141 = add i32 %140, %138
ret i32 %141
}