**** New globals: {i:i, i1:i1, i2:i2, i4:i4, i8:i8, u1:u1, u2:u2, u4:u4, u8:u8}
**** Add globals: {j:i, j1:i1, j2:i2, j4:i4, j8:i8, v1:u1, v2:u2, v4:u4, v8:u8}

> bnot i
bnot i : i
BndKind:VariadicOp, Type:i, Bnd:(BitXor(Global(i), -1:i))
// (∂.i:i) : i
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.0 [ia]
      1) ldloc.0 [ia]
      5) call static ia::op_OnesComplement(ia):ia
      5) box [ia]
      1) ret
  Total Size: 21

Func sig: (i:i) to i
Type: ia, Value: -1
###
> bnot i8
bnot i8 : i8
BndKind:VariadicOp, Type:i8, Bnd:(BitXor(Global(i8), -1:i8))
// (∂.i8:i8) : i8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.0 [i8]
      1) ldloc.0 [i8]
      1) not
      5) box [i8]
      1) ret
  Total Size: 17

Func sig: (i8:i8) to i8
Type: i8, Value: -1
###
> bnot i4
bnot i4 : i4
BndKind:VariadicOp, Type:i4, Bnd:(BitXor(Global(i4), -1:i4))
// (∂.i4:i4) : i4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.0 [i4]
      1) ldloc.0 [i4]
      1) not
      5) box [i4]
      1) ret
  Total Size: 17

Func sig: (i4:i4) to i4
Type: i4, Value: -1
###
> bnot i2
bnot i2 : i2
BndKind:VariadicOp, Type:i2, Bnd:(BitXor(Global(i2), -1:i2))
// (∂.i2:i2) : i2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i2
      1) stloc.0 [i2]
      1) ldloc.0 [i2]
      1) not
      5) box [i2]
      1) ret
  Total Size: 17

Func sig: (i2:i2) to i2
Type: i2, Value: -1
###
> bnot i1
bnot i1 : i1
BndKind:VariadicOp, Type:i1, Bnd:(BitXor(Global(i1), -1:i1))
// (∂.i1:i1) : i1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i1
      1) stloc.0 [i1]
      1) ldloc.0 [i1]
      1) not
      5) box [i1]
      1) ret
  Total Size: 17

Func sig: (i1:i1) to i1
Type: i1, Value: -1
###
> bnot u8
bnot u8 : u8
BndKind:VariadicOp, Type:u8, Bnd:(BitXor(Global(u8), 18446744073709551615:u8))
// (∂.u8:u8) : u8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u8
      1) stloc.0 [u8]
      1) ldloc.0 [u8]
      1) not
      5) box [u8]
      1) ret
  Total Size: 17

Func sig: (u8:u8) to u8
Type: u8, Value: 18446744073709551615
###
> bnot u4
bnot u4 : u4
BndKind:VariadicOp, Type:u4, Bnd:(BitXor(Global(u4), 4294967295:u4))
// (∂.u4:u4) : u4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.0 [u4]
      1) ldloc.0 [u4]
      1) not
      5) box [u4]
      1) ret
  Total Size: 17

Func sig: (u4:u4) to u4
Type: u4, Value: 4294967295
###
> bnot u2
bnot u2 : u2
BndKind:VariadicOp, Type:u2, Bnd:(BitXor(Global(u2), 65535:u2))
// (∂.u2:u2) : u2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u2
      1) stloc.0 [u2]
      1) ldloc.0 [u2]
      1) not
      1) conv.u2
      5) box [u2]
      1) ret
  Total Size: 18

Func sig: (u2:u2) to u2
Type: u2, Value: 65535
###
> bnot u1
bnot u1 : u1
BndKind:VariadicOp, Type:u1, Bnd:(BitXor(Global(u1), 255:u1))
// (∂.u1:u1) : u1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u1
      1) stloc.0 [u1]
      1) ldloc.0 [u1]
      1) not
      1) conv.u1
      5) box [u1]
      1) ret
  Total Size: 18

Func sig: (u1:u1) to u1
Type: u1, Value: 255
###
> bnot Wrap(0x01u1) bor Wrap(0u4)
bnot Wrap(1) bor Wrap(0) : u4
BndKind:VariadicOp, Type:u4, Bnd:(BitOr(Num<u4>(BitXor(Call(∂.Test.Wrap(1:u1):u1), 255:u1)), Call(∂.Test.Wrap(0:u4):u4)))
// () : u4
top(Arr<obj>, Arr<obj>):obj
      1) ldc.i4.1
      5) call static WrapFuncGen::Exec(u1):u1
      1) not
      1) conv.u1
      1) ldc.i4.0
      5) call static WrapFuncGen::Exec(u4):u4
      1) or
      5) box [u4]
      1) ret
  Total Size: 21

Func sig: () to u4
Type: u4, Value: 254
###
> bnot Wrap(0x01u2) bor Wrap(0u4)
bnot Wrap(1) bor Wrap(0) : u4
BndKind:VariadicOp, Type:u4, Bnd:(BitOr(Num<u4>(BitXor(Call(∂.Test.Wrap(1:u2):u2), 65535:u2)), Call(∂.Test.Wrap(0:u4):u4)))
// () : u4
top(Arr<obj>, Arr<obj>):obj
      1) ldc.i4.1
      5) call static WrapFuncGen::Exec(u2):u2
      1) not
      1) conv.u2
      1) ldc.i4.0
      5) call static WrapFuncGen::Exec(u4):u4
      1) or
      5) box [u4]
      1) ret
  Total Size: 21

Func sig: () to u4
Type: u4, Value: 65534
###
> bnot Wrap(0x01u4) bor Wrap(0u4)
bnot Wrap(1) bor Wrap(0) : u4
BndKind:VariadicOp, Type:u4, Bnd:(BitOr(BitXor(Call(∂.Test.Wrap(1:u4):u4), 4294967295:u4), Call(∂.Test.Wrap(0:u4):u4)))
// () : u4
top(Arr<obj>, Arr<obj>):obj
      1) ldc.i4.1
      5) call static WrapFuncGen::Exec(u4):u4
      1) not
      1) ldc.i4.0
      5) call static WrapFuncGen::Exec(u4):u4
      1) or
      5) box [u4]
      1) ret
  Total Size: 20

Func sig: () to u4
Type: u4, Value: 4294967294
###
> bnot Wrap(0x01i1) bor Wrap(0i4)
bnot Wrap(1) bor Wrap(0) : i4
BndKind:VariadicOp, Type:i4, Bnd:(BitOr(Num<i4>(BitXor(Call(∂.Test.Wrap(1:i1):i1), -1:i1)), Call(∂.Test.Wrap(0:i4):i4)))
// () : i4
top(Arr<obj>, Arr<obj>):obj
      1) ldc.i4.1
      5) call static WrapFuncGen::Exec(i1):i1
      1) not
      1) ldc.i4.0
      5) call static WrapFuncGen::Exec(i4):i4
      1) or
      5) box [i4]
      1) ret
  Total Size: 20

Func sig: () to i4
Type: i4, Value: -2
###
> bnot Wrap(0x01i2) bor Wrap(0i4)
bnot Wrap(1) bor Wrap(0) : i4
BndKind:VariadicOp, Type:i4, Bnd:(BitOr(Num<i4>(BitXor(Call(∂.Test.Wrap(1:i2):i2), -1:i2)), Call(∂.Test.Wrap(0:i4):i4)))
// () : i4
top(Arr<obj>, Arr<obj>):obj
      1) ldc.i4.1
      5) call static WrapFuncGen::Exec(i2):i2
      1) not
      1) ldc.i4.0
      5) call static WrapFuncGen::Exec(i4):i4
      1) or
      5) box [i4]
      1) ret
  Total Size: 20

Func sig: () to i4
Type: i4, Value: -2
###
> bnot Wrap(0x01i4) bor Wrap(0i4)
bnot Wrap(1) bor Wrap(0) : i4
BndKind:VariadicOp, Type:i4, Bnd:(BitOr(BitXor(Call(∂.Test.Wrap(1:i4):i4), -1:i4), Call(∂.Test.Wrap(0:i4):i4)))
// () : i4
top(Arr<obj>, Arr<obj>):obj
      1) ldc.i4.1
      5) call static WrapFuncGen::Exec(i4):i4
      1) not
      1) ldc.i4.0
      5) call static WrapFuncGen::Exec(i4):i4
      1) or
      5) box [i4]
      1) ret
  Total Size: 20

Func sig: () to i4
Type: i4, Value: -2
###
> i  band j
i band j : i
BndKind:VariadicOp, Type:i, Bnd:(BitAnd(Global(i), Global(j)))
// (∂.i:i, ∂.j:i) : i
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.0 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.1 [ia]
      1) ldloc.0 [ia]
      1) ldloc.1 [ia]
      5) call static ia::op_BitwiseAnd(ia, ia):ia
      5) box [ia]
      1) ret
  Total Size: 31

Func sig: (i:i, j:i) to i
Type: ia, Value: 0
###
> i8 band j8
i8 band j8 : i8
BndKind:VariadicOp, Type:i8, Bnd:(BitAnd(Global(i8), Global(j8)))
// (∂.i8:i8, ∂.j8:i8) : i8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.0 [i8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [i8]
      1) ldloc.1 [i8]
      1) and
      5) box [i8]
      1) ret
  Total Size: 27

Func sig: (i8:i8, j8:i8) to i8
Type: i8, Value: 0
###
> i4 band j4
i4 band j4 : i4
BndKind:VariadicOp, Type:i4, Bnd:(BitAnd(Global(i4), Global(j4)))
// (∂.i4:i4, ∂.j4:i4) : i4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.0 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.1 [i4]
      1) ldloc.0 [i4]
      1) ldloc.1 [i4]
      1) and
      5) box [i4]
      1) ret
  Total Size: 27

Func sig: (i4:i4, j4:i4) to i4
Type: i4, Value: 0
###
> i2 band j2
i2 band j2 : i2
BndKind:VariadicOp, Type:i2, Bnd:(BitAnd(Global(i2), Global(j2)))
// (∂.i2:i2, ∂.j2:i2) : i2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i2
      1) stloc.0 [i2]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i2
      1) stloc.1 [i2]
      1) ldloc.0 [i2]
      1) ldloc.1 [i2]
      1) and
      5) box [i2]
      1) ret
  Total Size: 27

Func sig: (i2:i2, j2:i2) to i2
Type: i2, Value: 0
###
> i1 band j1
i1 band j1 : i1
BndKind:VariadicOp, Type:i1, Bnd:(BitAnd(Global(i1), Global(j1)))
// (∂.i1:i1, ∂.j1:i1) : i1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i1
      1) stloc.0 [i1]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i1
      1) stloc.1 [i1]
      1) ldloc.0 [i1]
      1) ldloc.1 [i1]
      1) and
      5) box [i1]
      1) ret
  Total Size: 27

Func sig: (i1:i1, j1:i1) to i1
Type: i1, Value: 0
###
> u8 band v8
u8 band v8 : u8
BndKind:VariadicOp, Type:u8, Bnd:(BitAnd(Global(u8), Global(v8)))
// (∂.u8:u8, ∂.v8:u8) : u8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u8
      1) stloc.0 [u8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u8
      1) stloc.1 [u8]
      1) ldloc.0 [u8]
      1) ldloc.1 [u8]
      1) and
      5) box [u8]
      1) ret
  Total Size: 27

Func sig: (u8:u8, v8:u8) to u8
Type: u8, Value: 0
###
> u4 band v4
u4 band v4 : u4
BndKind:VariadicOp, Type:u4, Bnd:(BitAnd(Global(u4), Global(v4)))
// (∂.u4:u4, ∂.v4:u4) : u4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.0 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.1 [u4]
      1) ldloc.0 [u4]
      1) ldloc.1 [u4]
      1) and
      5) box [u4]
      1) ret
  Total Size: 27

Func sig: (u4:u4, v4:u4) to u4
Type: u4, Value: 0
###
> u2 band v2
u2 band v2 : u2
BndKind:VariadicOp, Type:u2, Bnd:(BitAnd(Global(u2), Global(v2)))
// (∂.u2:u2, ∂.v2:u2) : u2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u2
      1) stloc.0 [u2]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u2
      1) stloc.1 [u2]
      1) ldloc.0 [u2]
      1) ldloc.1 [u2]
      1) and
      5) box [u2]
      1) ret
  Total Size: 27

Func sig: (u2:u2, v2:u2) to u2
Type: u2, Value: 0
###
> u1 band v1
u1 band v1 : u1
BndKind:VariadicOp, Type:u1, Bnd:(BitAnd(Global(u1), Global(v1)))
// (∂.u1:u1, ∂.v1:u1) : u1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u1
      1) stloc.0 [u1]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u1
      1) stloc.1 [u1]
      1) ldloc.0 [u1]
      1) ldloc.1 [u1]
      1) and
      5) box [u1]
      1) ret
  Total Size: 27

Func sig: (u1:u1, v1:u1) to u1
Type: u1, Value: 0
###
> i  bxor j
i bxor j : i
BndKind:VariadicOp, Type:i, Bnd:(BitXor(Global(i), Global(j)))
// (∂.i:i, ∂.j:i) : i
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.0 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.1 [ia]
      1) ldloc.0 [ia]
      1) ldloc.1 [ia]
      5) call static ia::op_ExclusiveOr(ia, ia):ia
      5) box [ia]
      1) ret
  Total Size: 31

Func sig: (i:i, j:i) to i
Type: ia, Value: 0
###
> i8 bxor j8
i8 bxor j8 : i8
BndKind:VariadicOp, Type:i8, Bnd:(BitXor(Global(i8), Global(j8)))
// (∂.i8:i8, ∂.j8:i8) : i8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.0 [i8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [i8]
      1) ldloc.1 [i8]
      1) xor
      5) box [i8]
      1) ret
  Total Size: 27

Func sig: (i8:i8, j8:i8) to i8
Type: i8, Value: 0
###
> i4 bxor j4
i4 bxor j4 : i4
BndKind:VariadicOp, Type:i4, Bnd:(BitXor(Global(i4), Global(j4)))
// (∂.i4:i4, ∂.j4:i4) : i4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.0 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.1 [i4]
      1) ldloc.0 [i4]
      1) ldloc.1 [i4]
      1) xor
      5) box [i4]
      1) ret
  Total Size: 27

Func sig: (i4:i4, j4:i4) to i4
Type: i4, Value: 0
###
> i2 bxor j2
i2 bxor j2 : i2
BndKind:VariadicOp, Type:i2, Bnd:(BitXor(Global(i2), Global(j2)))
// (∂.i2:i2, ∂.j2:i2) : i2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i2
      1) stloc.0 [i2]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i2
      1) stloc.1 [i2]
      1) ldloc.0 [i2]
      1) ldloc.1 [i2]
      1) xor
      5) box [i2]
      1) ret
  Total Size: 27

Func sig: (i2:i2, j2:i2) to i2
Type: i2, Value: 0
###
> i1 bxor j1
i1 bxor j1 : i1
BndKind:VariadicOp, Type:i1, Bnd:(BitXor(Global(i1), Global(j1)))
// (∂.i1:i1, ∂.j1:i1) : i1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i1
      1) stloc.0 [i1]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i1
      1) stloc.1 [i1]
      1) ldloc.0 [i1]
      1) ldloc.1 [i1]
      1) xor
      5) box [i1]
      1) ret
  Total Size: 27

Func sig: (i1:i1, j1:i1) to i1
Type: i1, Value: 0
###
> u8 bxor v8
u8 bxor v8 : u8
BndKind:VariadicOp, Type:u8, Bnd:(BitXor(Global(u8), Global(v8)))
// (∂.u8:u8, ∂.v8:u8) : u8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u8
      1) stloc.0 [u8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u8
      1) stloc.1 [u8]
      1) ldloc.0 [u8]
      1) ldloc.1 [u8]
      1) xor
      5) box [u8]
      1) ret
  Total Size: 27

Func sig: (u8:u8, v8:u8) to u8
Type: u8, Value: 0
###
> u4 bxor v4
u4 bxor v4 : u4
BndKind:VariadicOp, Type:u4, Bnd:(BitXor(Global(u4), Global(v4)))
// (∂.u4:u4, ∂.v4:u4) : u4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.0 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.1 [u4]
      1) ldloc.0 [u4]
      1) ldloc.1 [u4]
      1) xor
      5) box [u4]
      1) ret
  Total Size: 27

Func sig: (u4:u4, v4:u4) to u4
Type: u4, Value: 0
###
> u2 bxor v2
u2 bxor v2 : u2
BndKind:VariadicOp, Type:u2, Bnd:(BitXor(Global(u2), Global(v2)))
// (∂.u2:u2, ∂.v2:u2) : u2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u2
      1) stloc.0 [u2]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u2
      1) stloc.1 [u2]
      1) ldloc.0 [u2]
      1) ldloc.1 [u2]
      1) xor
      5) box [u2]
      1) ret
  Total Size: 27

Func sig: (u2:u2, v2:u2) to u2
Type: u2, Value: 0
###
> u1 bxor v1
u1 bxor v1 : u1
BndKind:VariadicOp, Type:u1, Bnd:(BitXor(Global(u1), Global(v1)))
// (∂.u1:u1, ∂.v1:u1) : u1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u1
      1) stloc.0 [u1]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u1
      1) stloc.1 [u1]
      1) ldloc.0 [u1]
      1) ldloc.1 [u1]
      1) xor
      5) box [u1]
      1) ret
  Total Size: 27

Func sig: (u1:u1, v1:u1) to u1
Type: u1, Value: 0
###
> i  bor j
i bor j : i
BndKind:VariadicOp, Type:i, Bnd:(BitOr(Global(i), Global(j)))
// (∂.i:i, ∂.j:i) : i
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.0 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.1 [ia]
      1) ldloc.0 [ia]
      1) ldloc.1 [ia]
      5) call static ia::op_BitwiseOr(ia, ia):ia
      5) box [ia]
      1) ret
  Total Size: 31

Func sig: (i:i, j:i) to i
Type: ia, Value: 0
###
> i8 bor j8
i8 bor j8 : i8
BndKind:VariadicOp, Type:i8, Bnd:(BitOr(Global(i8), Global(j8)))
// (∂.i8:i8, ∂.j8:i8) : i8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.0 [i8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [i8]
      1) ldloc.1 [i8]
      1) or
      5) box [i8]
      1) ret
  Total Size: 27

Func sig: (i8:i8, j8:i8) to i8
Type: i8, Value: 0
###
> i4 bor j4
i4 bor j4 : i4
BndKind:VariadicOp, Type:i4, Bnd:(BitOr(Global(i4), Global(j4)))
// (∂.i4:i4, ∂.j4:i4) : i4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.0 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.1 [i4]
      1) ldloc.0 [i4]
      1) ldloc.1 [i4]
      1) or
      5) box [i4]
      1) ret
  Total Size: 27

Func sig: (i4:i4, j4:i4) to i4
Type: i4, Value: 0
###
> i2 bor j2
i2 bor j2 : i2
BndKind:VariadicOp, Type:i2, Bnd:(BitOr(Global(i2), Global(j2)))
// (∂.i2:i2, ∂.j2:i2) : i2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i2
      1) stloc.0 [i2]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i2
      1) stloc.1 [i2]
      1) ldloc.0 [i2]
      1) ldloc.1 [i2]
      1) or
      5) box [i2]
      1) ret
  Total Size: 27

Func sig: (i2:i2, j2:i2) to i2
Type: i2, Value: 0
###
> i1 bor j1
i1 bor j1 : i1
BndKind:VariadicOp, Type:i1, Bnd:(BitOr(Global(i1), Global(j1)))
// (∂.i1:i1, ∂.j1:i1) : i1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i1
      1) stloc.0 [i1]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i1
      1) stloc.1 [i1]
      1) ldloc.0 [i1]
      1) ldloc.1 [i1]
      1) or
      5) box [i1]
      1) ret
  Total Size: 27

Func sig: (i1:i1, j1:i1) to i1
Type: i1, Value: 0
###
> u8 bor v8
u8 bor v8 : u8
BndKind:VariadicOp, Type:u8, Bnd:(BitOr(Global(u8), Global(v8)))
// (∂.u8:u8, ∂.v8:u8) : u8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u8
      1) stloc.0 [u8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u8
      1) stloc.1 [u8]
      1) ldloc.0 [u8]
      1) ldloc.1 [u8]
      1) or
      5) box [u8]
      1) ret
  Total Size: 27

Func sig: (u8:u8, v8:u8) to u8
Type: u8, Value: 0
###
> u4 bor v4
u4 bor v4 : u4
BndKind:VariadicOp, Type:u4, Bnd:(BitOr(Global(u4), Global(v4)))
// (∂.u4:u4, ∂.v4:u4) : u4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.0 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.1 [u4]
      1) ldloc.0 [u4]
      1) ldloc.1 [u4]
      1) or
      5) box [u4]
      1) ret
  Total Size: 27

Func sig: (u4:u4, v4:u4) to u4
Type: u4, Value: 0
###
> u2 bor v2
u2 bor v2 : u2
BndKind:VariadicOp, Type:u2, Bnd:(BitOr(Global(u2), Global(v2)))
// (∂.u2:u2, ∂.v2:u2) : u2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u2
      1) stloc.0 [u2]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u2
      1) stloc.1 [u2]
      1) ldloc.0 [u2]
      1) ldloc.1 [u2]
      1) or
      5) box [u2]
      1) ret
  Total Size: 27

Func sig: (u2:u2, v2:u2) to u2
Type: u2, Value: 0
###
> u1 bor v1
u1 bor v1 : u1
BndKind:VariadicOp, Type:u1, Bnd:(BitOr(Global(u1), Global(v1)))
// (∂.u1:u1, ∂.v1:u1) : u1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u1
      1) stloc.0 [u1]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u1
      1) stloc.1 [u1]
      1) ldloc.0 [u1]
      1) ldloc.1 [u1]
      1) or
      5) box [u1]
      1) ret
  Total Size: 27

Func sig: (u1:u1, v1:u1) to u1
Type: u1, Value: 0
###
> i  shl j8
i shl j8 : i
BndKind:BinaryOp, Type:i, Bnd:(Shl(Global(i), Global(j8)))
// (∂.i:i, ∂.j8:i8) : i
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.0 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [ia]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_LeftShift(ia, i4):ia
  Label [0]:
      5) box [ia]
      1) ret
  Total Size: 44

Func sig: (i:i, j8:i8) to i
Type: ia, Value: 0
###
> i8 shl j8
i8 shl j8 : i8
BndKind:BinaryOp, Type:i8, Bnd:(Shl(Global(i8), Global(j8)))
// (∂.i8:i8, ∂.j8:i8) : i8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.0 [i8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [i8]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.i8
  Label [1]:
      5) box [i8]
      1) ret
  Total Size: 52

Func sig: (i8:i8, j8:i8) to i8
Type: i8, Value: 0
###
> i4 shl j8
i4 shl j8 : i4
BndKind:BinaryOp, Type:i4, Bnd:(Shl(Global(i4), Global(j8)))
// (∂.i4:i4, ∂.j8:i8) : i4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.0 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [i4]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [i4]
      1) ret
  Total Size: 51

Func sig: (i4:i4, j8:i8) to i4
Type: i4, Value: 0
###
> i2 shl j8
i2 shl j8 : i2
BndKind:BinaryOp, Type:i2, Bnd:(Shl(Global(i2), Global(j8)))
// (∂.i2:i2, ∂.j8:i8) : i2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i2
      1) stloc.0 [i2]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [i2]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shl
      1) conv.i2
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [i2]
      1) ret
  Total Size: 52

Func sig: (i2:i2, j8:i8) to i2
Type: i2, Value: 0
###
> i1 shl j8
i1 shl j8 : i1
BndKind:BinaryOp, Type:i1, Bnd:(Shl(Global(i1), Global(j8)))
// (∂.i1:i1, ∂.j8:i8) : i1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i1
      1) stloc.0 [i1]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [i1]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shl
      1) conv.i1
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [i1]
      1) ret
  Total Size: 51

Func sig: (i1:i1, j8:i8) to i1
Type: i1, Value: 0
###
> u8 shl j8
u8 shl j8 : u8
BndKind:BinaryOp, Type:u8, Bnd:(Shl(Global(u8), Global(j8)))
// (∂.u8:u8, ∂.j8:i8) : u8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u8
      1) stloc.0 [u8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [u8]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      5) box [u8]
      1) ret
  Total Size: 52

Func sig: (u8:u8, j8:i8) to u8
Type: u8, Value: 0
###
> u4 shl j8
u4 shl j8 : u4
BndKind:BinaryOp, Type:u4, Bnd:(Shl(Global(u4), Global(j8)))
// (∂.u4:u4, ∂.j8:i8) : u4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.0 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [u4]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [u4]
      1) ret
  Total Size: 51

Func sig: (u4:u4, j8:i8) to u4
Type: u4, Value: 0
###
> u2 shl j8
u2 shl j8 : u2
BndKind:BinaryOp, Type:u2, Bnd:(Shl(Global(u2), Global(j8)))
// (∂.u2:u2, ∂.j8:i8) : u2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u2
      1) stloc.0 [u2]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [u2]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shl
      1) conv.u2
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [u2]
      1) ret
  Total Size: 52

Func sig: (u2:u2, j8:i8) to u2
Type: u2, Value: 0
###
> u1 shl j8
u1 shl j8 : u1
BndKind:BinaryOp, Type:u1, Bnd:(Shl(Global(u1), Global(j8)))
// (∂.u1:u1, ∂.j8:i8) : u1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u1
      1) stloc.0 [u1]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [u1]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shl
      1) conv.u1
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [u1]
      1) ret
  Total Size: 51

Func sig: (u1:u1, j8:i8) to u1
Type: u1, Value: 0
###
> i  shr j8
i shr j8 : i
BndKind:BinaryOp, Type:i, Bnd:(Shri(Global(i), Global(j8)))
// (∂.i:i, ∂.j8:i8) : i
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.0 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [ia]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      5) box [ia]
      1) ret
  Total Size: 44

Func sig: (i:i, j8:i8) to i
Type: ia, Value: 0
###
> i8 shr j8
i8 shr j8 : i8
BndKind:BinaryOp, Type:i8, Bnd:(Shri(Global(i8), Global(j8)))
// (∂.i8:i8, ∂.j8:i8) : i8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.0 [i8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [i8]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      5) box [i8]
      1) ret
  Total Size: 49

Func sig: (i8:i8, j8:i8) to i8
Type: i8, Value: 0
###
> i4 shr j8
i4 shr j8 : i4
BndKind:BinaryOp, Type:i4, Bnd:(Shri(Global(i4), Global(j8)))
// (∂.i4:i4, ∂.j8:i8) : i4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.0 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [i4]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      5) box [i4]
      1) ret
  Total Size: 49

Func sig: (i4:i4, j8:i8) to i4
Type: i4, Value: 0
###
> i2 shr j8
i2 shr j8 : i2
BndKind:BinaryOp, Type:i2, Bnd:(Shri(Global(i2), Global(j8)))
// (∂.i2:i2, ∂.j8:i8) : i2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i2
      1) stloc.0 [i2]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [i2]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      5) box [i2]
      1) ret
  Total Size: 49

Func sig: (i2:i2, j8:i8) to i2
Type: i2, Value: 0
###
> i1 shr j8
i1 shr j8 : i1
BndKind:BinaryOp, Type:i1, Bnd:(Shri(Global(i1), Global(j8)))
// (∂.i1:i1, ∂.j8:i8) : i1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i1
      1) stloc.0 [i1]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [i1]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      5) box [i1]
      1) ret
  Total Size: 47

Func sig: (i1:i1, j8:i8) to i1
Type: i1, Value: 0
###
> u8 shr j8
u8 shr j8 : u8
BndKind:BinaryOp, Type:u8, Bnd:(Shru(Global(u8), Global(j8)))
// (∂.u8:u8, ∂.j8:i8) : u8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u8
      1) stloc.0 [u8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [u8]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      5) box [u8]
      1) ret
  Total Size: 52

Func sig: (u8:u8, j8:i8) to u8
Type: u8, Value: 0
###
> u4 shr j8
u4 shr j8 : u4
BndKind:BinaryOp, Type:u4, Bnd:(Shru(Global(u4), Global(j8)))
// (∂.u4:u4, ∂.j8:i8) : u4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.0 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [u4]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [u4]
      1) ret
  Total Size: 51

Func sig: (u4:u4, j8:i8) to u4
Type: u4, Value: 0
###
> u2 shr j8
u2 shr j8 : u2
BndKind:BinaryOp, Type:u2, Bnd:(Shru(Global(u2), Global(j8)))
// (∂.u2:u2, ∂.j8:i8) : u2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u2
      1) stloc.0 [u2]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [u2]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [u2]
      1) ret
  Total Size: 51

Func sig: (u2:u2, j8:i8) to u2
Type: u2, Value: 0
###
> u1 shr j8
u1 shr j8 : u1
BndKind:BinaryOp, Type:u1, Bnd:(Shru(Global(u1), Global(j8)))
// (∂.u1:u1, ∂.j8:i8) : u1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u1
      1) stloc.0 [u1]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [u1]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [u1]
      1) ret
  Total Size: 50

Func sig: (u1:u1, j8:i8) to u1
Type: u1, Value: 0
###
> i  shru j8
i shru j8 : i
BndKind:BinaryOp, Type:i, Bnd:(Shri(Global(i), Global(j8)))
*** Warning: (3,7) Node: i shru j8, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.i:i, ∂.j8:i8) : i
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.0 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [ia]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      5) box [ia]
      1) ret
  Total Size: 44

Func sig: (i:i, j8:i8) to i
Type: ia, Value: 0
###
> i8 shru j8
i8 shru j8 : i8
BndKind:BinaryOp, Type:i8, Bnd:(Shru(Global(i8), Global(j8)))
// (∂.i8:i8, ∂.j8:i8) : i8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.0 [i8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [i8]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.i8
  Label [1]:
      5) box [i8]
      1) ret
  Total Size: 52

Func sig: (i8:i8, j8:i8) to i8
Type: i8, Value: 0
###
> i4 shru j8
i4 shru j8 : i4
BndKind:BinaryOp, Type:i4, Bnd:(Shru(Global(i4), Global(j8)))
// (∂.i4:i4, ∂.j8:i8) : i4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.0 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [i4]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [i4]
      1) ret
  Total Size: 51

Func sig: (i4:i4, j8:i8) to i4
Type: i4, Value: 0
###
> i2 shru j8
i2 shru j8 : i2
BndKind:BinaryOp, Type:i2, Bnd:(Shru(Global(i2), Global(j8)))
// (∂.i2:i2, ∂.j8:i8) : i2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i2
      1) stloc.0 [i2]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [i2]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) conv.u2
      1) ldloc.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [i2]
      1) ret
  Total Size: 52

Func sig: (i2:i2, j8:i8) to i2
Type: i2, Value: 0
###
> i1 shru j8
i1 shru j8 : i1
BndKind:BinaryOp, Type:i1, Bnd:(Shru(Global(i1), Global(j8)))
// (∂.i1:i1, ∂.j8:i8) : i1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i1
      1) stloc.0 [i1]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [i1]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) conv.u1
      1) ldloc.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [i1]
      1) ret
  Total Size: 51

Func sig: (i1:i1, j8:i8) to i1
Type: i1, Value: 0
###
> u8 shru j8
u8 shru j8 : u8
BndKind:BinaryOp, Type:u8, Bnd:(Shru(Global(u8), Global(j8)))
// (∂.u8:u8, ∂.j8:i8) : u8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u8
      1) stloc.0 [u8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [u8]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      5) box [u8]
      1) ret
  Total Size: 52

Func sig: (u8:u8, j8:i8) to u8
Type: u8, Value: 0
###
> u4 shru j8
u4 shru j8 : u4
BndKind:BinaryOp, Type:u4, Bnd:(Shru(Global(u4), Global(j8)))
// (∂.u4:u4, ∂.j8:i8) : u4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.0 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [u4]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [u4]
      1) ret
  Total Size: 51

Func sig: (u4:u4, j8:i8) to u4
Type: u4, Value: 0
###
> u2 shru j8
u2 shru j8 : u2
BndKind:BinaryOp, Type:u2, Bnd:(Shru(Global(u2), Global(j8)))
// (∂.u2:u2, ∂.j8:i8) : u2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u2
      1) stloc.0 [u2]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [u2]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [u2]
      1) ret
  Total Size: 51

Func sig: (u2:u2, j8:i8) to u2
Type: u2, Value: 0
###
> u1 shru j8
u1 shru j8 : u1
BndKind:BinaryOp, Type:u1, Bnd:(Shru(Global(u1), Global(j8)))
// (∂.u1:u1, ∂.j8:i8) : u1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u1
      1) stloc.0 [u1]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldloc.0 [u1]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldloc.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      5) box [u1]
      1) ret
  Total Size: 50

Func sig: (u1:u1, j8:i8) to u1
Type: u1, Value: 0
###
> i  shri j8
i shri j8 : i
BndKind:BinaryOp, Type:i, Bnd:(Shri(Global(i), Global(j8)))
// (∂.i:i, ∂.j8:i8) : i
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):ia
      1) stloc.0 [ia]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [ia]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      5) box [ia]
      1) ret
  Total Size: 44

Func sig: (i:i, j8:i8) to i
Type: ia, Value: 0
###
> i8 shri j8
i8 shri j8 : i8
BndKind:BinaryOp, Type:i8, Bnd:(Shri(Global(i8), Global(j8)))
// (∂.i8:i8, ∂.j8:i8) : i8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.0 [i8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [i8]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      5) box [i8]
      1) ret
  Total Size: 49

Func sig: (i8:i8, j8:i8) to i8
Type: i8, Value: 0
###
> i4 shri j8
i4 shri j8 : i4
BndKind:BinaryOp, Type:i4, Bnd:(Shri(Global(i4), Global(j8)))
// (∂.i4:i4, ∂.j8:i8) : i4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i4
      1) stloc.0 [i4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [i4]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      5) box [i4]
      1) ret
  Total Size: 49

Func sig: (i4:i4, j8:i8) to i4
Type: i4, Value: 0
###
> i2 shri j8
i2 shri j8 : i2
BndKind:BinaryOp, Type:i2, Bnd:(Shri(Global(i2), Global(j8)))
// (∂.i2:i2, ∂.j8:i8) : i2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i2
      1) stloc.0 [i2]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [i2]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      5) box [i2]
      1) ret
  Total Size: 49

Func sig: (i2:i2, j8:i8) to i2
Type: i2, Value: 0
###
> i1 shri j8
i1 shri j8 : i1
BndKind:BinaryOp, Type:i1, Bnd:(Shri(Global(i1), Global(j8)))
// (∂.i1:i1, ∂.j8:i8) : i1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i1
      1) stloc.0 [i1]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [i1]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      5) box [i1]
      1) ret
  Total Size: 47

Func sig: (i1:i1, j8:i8) to i1
Type: i1, Value: 0
###
> u8 shri j8
u8 shri j8 : u8
BndKind:BinaryOp, Type:u8, Bnd:(Shri(Global(u8), Global(j8)))
// (∂.u8:u8, ∂.j8:i8) : u8
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u8
      1) stloc.0 [u8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [u8]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      5) box [u8]
      1) ret
  Total Size: 49

Func sig: (u8:u8, j8:i8) to u8
Type: u8, Value: 0
###
> u4 shri j8
u4 shri j8 : u4
BndKind:BinaryOp, Type:u4, Bnd:(Shri(Global(u4), Global(j8)))
// (∂.u4:u4, ∂.j8:i8) : u4
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u4
      1) stloc.0 [u4]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [u4]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      5) box [u4]
      1) ret
  Total Size: 49

Func sig: (u4:u4, j8:i8) to u4
Type: u4, Value: 0
###
> u2 shri j8
u2 shri j8 : u2
BndKind:BinaryOp, Type:u2, Bnd:(Shri(Global(u2), Global(j8)))
// (∂.u2:u2, ∂.j8:i8) : u2
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u2
      1) stloc.0 [u2]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [u2]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) conv.i2
      1) ldloc.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      5) box [u2]
      1) ret
  Total Size: 50

Func sig: (u2:u2, j8:i8) to u2
Type: u2, Value: 0
###
> u1 shri j8
u1 shri j8 : u1
BndKind:BinaryOp, Type:u1, Bnd:(Shri(Global(u1), Global(j8)))
// (∂.u1:u1, ∂.j8:i8) : u1
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):u1
      1) stloc.0 [u1]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      1) ldloc.0 [u1]
      1) ldloc.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) conv.i1
      1) ldloc.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      5) box [u1]
      1) ret
  Total Size: 48

Func sig: (u1:u1, j8:i8) to u1
Type: u1, Value: 0
###

**** New definitions: S, type: i8*

> +0ia shl S
+0 shl S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.0
      5) newobj ia(i4)
      1) ret
  Total Size: 7

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1ia shl S
+1 shl S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(1:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.1
      5) newobj ia(i4)
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_LeftShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 1
 1) 1
 2) 2
 3) 128
 4) 256
 5) 32768
 6) 65536
 7) 2147483648
 8) 4294967296
 9) 4611686018427387904
10) 9223372036854775808
11) 18446744073709551616
12) 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
###
> -1ia shl S
-1 shl S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-1:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.m1
      5) newobj ia(i4)
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_LeftShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) -1
 1) -1
 2) -2
 3) -128
 4) -256
 5) -32768
 6) -65536
 7) -2147483648
 8) -4294967296
 9) -4611686018427387904
10) -9223372036854775808
11) -18446744073709551616
12) -10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
###
> +2ia shl S
+2 shl S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(2:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.2
      5) newobj ia(i4)
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_LeftShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 2
 1) 2
 2) 4
 3) 256
 4) 512
 5) 65536
 6) 131072
 7) 4294967296
 8) 8589934592
 9) 9223372036854775808
10) 18446744073709551616
11) 36893488147419103232
12) 21430172143725346418968500981200036211228096234110672148875007767407021022498722449863967576313917162551893458351062936503742905713846280871969155149397149607869135549648461970842149210124742283755908364306092949967163882534797535118331087892154125829142392955373084335320859663305248773674411336138752
###
> -2ia shl S
-2 shl S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-2:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      2) ldc.i4.s [-2]
      5) newobj ia(i4)
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_LeftShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) -2
 1) -2
 2) -4
 3) -256
 4) -512
 5) -65536
 6) -131072
 7) -4294967296
 8) -8589934592
 9) -9223372036854775808
10) -18446744073709551616
11) -36893488147419103232
12) -21430172143725346418968500981200036211228096234110672148875007767407021022498722449863967576313917162551893458351062936503742905713846280871969155149397149607869135549648461970842149210124742283755908364306092949967163882534797535118331087892154125829142392955373084335320859663305248773674411336138752
###
> 0x7FFFFFFFFFFFFFFFia  shl S
9223372036854775807 shl S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(9223372036854775807:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) unbox.any [ia]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_LeftShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 9223372036854775807
 1) 9223372036854775807
 2) 18446744073709551614
 3) 1180591620717411303296
 4) 2361183241434822606592
 5) 302231454903657293643776
 6) 604462909807314587287552
 7) 19807040628566084396238503936
 8) 39614081257132168792477007872
 9) 42535295865117307928310139910543638528
10) 85070591730234615856620279821087277056
11) 170141183460469231713240559642174554112
12) 98829225247710262856714282443233668123307082402047500623341693107275884417747724090886520592967984719983581575278984734832358318376125502874599933832890585111631352247843593831059039521119722306199905706691898911130838534362916756763538837858167422060370616460348117530904103627406476646883675397178433358918511002386432
###
> -0x8000000000000000ia shl S
-9223372036854775808 shl S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-9223372036854775808:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) unbox.any [ia]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_LeftShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) -9223372036854775808
 1) -9223372036854775808
 2) -18446744073709551616
 3) -1180591620717411303424
 4) -2361183241434822606848
 5) -302231454903657293676544
 6) -604462909807314587353088
 7) -19807040628566084398385987584
 8) -39614081257132168796771975168
 9) -42535295865117307932921825928971026432
10) -85070591730234615865843651857942052864
11) -170141183460469231731687303715884105728
12) -98829225247710262867429368515096341332791332892647518728955741224331220492185227974590031104217345944915565363435943316108305047551656971126471386689813725547615929822542168634993607295943953291620980311754270053008792716515963231747120779125566189619536160406425180445475300105093018814544105228831057745755716670455808
###
> +0i8 shl S
+0 shl S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i8):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldc.i4.0
      1) conv.i8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i8 shl S
+1 shl S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(1:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) conv.i8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.i8
  Label [1]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 1
 1) 1
 2) 2
 3) 128
 4) 256
 5) 32768
 6) 65536
 7) 2147483648
 8) 4294967296
 9) 4611686018427387904
10) -9223372036854775808
11) 0
12) 0
###
> -1i8 shl S
-1 shl S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-1:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.m1
      1) conv.i8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.i8
  Label [1]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) -1
 1) -1
 2) -2
 3) -128
 4) -256
 5) -32768
 6) -65536
 7) -2147483648
 8) -4294967296
 9) -4611686018427387904
10) -9223372036854775808
11) 0
12) 0
###
> +2i8 shl S
+2 shl S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(2:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) conv.i8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.i8
  Label [1]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 2
 1) 2
 2) 4
 3) 256
 4) 512
 5) 65536
 6) 131072
 7) 4294967296
 8) 8589934592
 9) -9223372036854775808
10) 0
11) 0
12) 0
###
> -2i8 shl S
-2 shl S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-2:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [-2]
      1) conv.i8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.i8
  Label [1]:
      1) ret
  Total Size: 31

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) -2
 1) -2
 2) -4
 3) -256
 4) -512
 5) -65536
 6) -131072
 7) -4294967296
 8) -8589934592
 9) -9223372036854775808
10) 0
11) 0
12) 0
###
> 0x7FFFFFFFFFFFFFFFi8 shl S
9223372036854775807 shl S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(9223372036854775807:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      9) ldc.i8 [9223372036854775807]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.i8
  Label [1]:
      1) ret
  Total Size: 37

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 9223372036854775807
 1) 9223372036854775807
 2) -2
 3) -128
 4) -256
 5) -32768
 6) -65536
 7) -2147483648
 8) -4294967296
 9) -4611686018427387904
10) -9223372036854775808
11) 0
12) 0
###
> 0x8000000000000000i8 shl S
9223372036854775808 shl S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-9223372036854775808:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      9) ldc.i8 [-9223372036854775808]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.i8
  Label [1]:
      1) ret
  Total Size: 37

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) -9223372036854775808
 1) -9223372036854775808
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +0i4 shl S
+0 shl S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i4):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i4 shl S
+1 shl S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(1:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 1
 1) 1
 2) 2
 3) 128
 4) 256
 5) 32768
 6) 65536
 7) -2147483648
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i4 shl S
-1 shl S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-1:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.m1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) -1
 1) -1
 2) -2
 3) -128
 4) -256
 5) -32768
 6) -65536
 7) -2147483648
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +2i4 shl S
+2 shl S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(2:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 2
 1) 2
 2) 4
 3) 256
 4) 512
 5) 65536
 6) 131072
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i4 shl S
-2 shl S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-2:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [-2]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) -2
 1) -2
 2) -4
 3) -256
 4) -512
 5) -65536
 6) -131072
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFFFFFi4 shl S
2147483647 shl S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(2147483647:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [2147483647]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 2147483647
 1) 2147483647
 2) -2
 3) -128
 4) -256
 5) -32768
 6) -65536
 7) -2147483648
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80000000i4 shl S
2147483648 shl S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-2147483648:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [-2147483648]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) -2147483648
 1) -2147483648
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +0i2 shl S
+0 shl S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i2):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i2 shl S
+1 shl S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(1:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.i2
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 1
 1) 1
 2) 2
 3) 128
 4) 256
 5) -32768
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i2 shl S
-1 shl S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-1:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.m1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.i2
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) -1
 1) -1
 2) -2
 3) -128
 4) -256
 5) -32768
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +2i2 shl S
+2 shl S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(2:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.i2
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 2
 1) 2
 2) 4
 3) 256
 4) 512
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i2 shl S
-2 shl S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-2:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [-2]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.i2
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) -2
 1) -2
 2) -4
 3) -256
 4) -512
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFi2 shl S
32767 shl S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(32767:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [32767]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.i2
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 33

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 32767
 1) 32767
 2) -2
 3) -128
 4) -256
 5) -32768
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x8000i2 shl S
32768 shl S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-32768:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [-32768]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.i2
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 33

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) -32768
 1) -32768
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +0i1 shl S
+0 shl S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i1):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i1 shl S
+1 shl S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(1:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.i1
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 1
 1) 1
 2) 2
 3) -128
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i1 shl S
-1 shl S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-1:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldc.i4.m1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.i1
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) -1
 1) -1
 2) -2
 3) -128
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +2i1 shl S
+2 shl S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(2:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.i1
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 2
 1) 2
 2) 4
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i1 shl S
-2 shl S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-2:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [-2]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.i1
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) -2
 1) -2
 2) -4
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7Fi1 shl S
127 shl S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(127:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [127]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.i1
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 127
 1) 127
 2) -2
 3) -128
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80i1 shl S
128 shl S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(-128:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [-128]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.i1
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) -128
 1) -128
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +0ia shr S
+0 shr S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.0
      5) newobj ia(i4)
      1) ret
  Total Size: 7

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1ia shr S
+1 shr S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.1
      5) newobj ia(i4)
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1ia shr S
-1 shr S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), -1:i):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.m1
      5) newobj ia(i4)
      1) ret
  Total Size: 7

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) -1
 1) -1
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +2ia shr S
+2 shr S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.2
      5) newobj ia(i4)
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2ia shr S
-2 shr S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-2:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      2) ldc.i4.s [-2]
      5) newobj ia(i4)
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) -2
 1) -2
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> 0x7FFFFFFFFFFFFFFFia  shr S
9223372036854775807 shr S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(9223372036854775807:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) unbox.any [ia]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 9223372036854775807
 1) 9223372036854775807
 2) 4611686018427387903
 3) 72057594037927935
 4) 36028797018963967
 5) 281474976710655
 6) 140737488355327
 7) 4294967295
 8) 2147483647
 9) 1
10) 0
11) 0
12) 0
###
> -0x8000000000000000ia shr S
-9223372036854775808 shr S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-9223372036854775808:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) unbox.any [ia]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) -9223372036854775808
 1) -9223372036854775808
 2) -4611686018427387904
 3) -72057594037927936
 4) -36028797018963968
 5) -281474976710656
 6) -140737488355328
 7) -4294967296
 8) -2147483648
 9) -2
10) -1
11) -1
12) -1
###
> +0i8 shr S
+0 shr S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i8):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldc.i4.0
      1) conv.i8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i8 shr S
+1 shr S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldc.i4.1
      1) conv.i8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i8 shr S
-1 shr S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), -1:i8):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldc.i4.m1
      1) conv.i8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) -1
 1) -1
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +2i8 shr S
+2 shr S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldc.i4.2
      1) conv.i8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i8 shr S
-2 shr S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-2:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      2) ldc.i4.s [-2]
      1) conv.i8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) -2
 1) -2
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> 0x7FFFFFFFFFFFFFFFi8 shr S
9223372036854775807 shr S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(9223372036854775807:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      9) ldc.i8 [9223372036854775807]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 34

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 9223372036854775807
 1) 9223372036854775807
 2) 4611686018427387903
 3) 72057594037927935
 4) 36028797018963967
 5) 281474976710655
 6) 140737488355327
 7) 4294967295
 8) 2147483647
 9) 1
10) 0
11) 0
12) 0
###
> 0x8000000000000000i8 shr S
9223372036854775808 shr S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-9223372036854775808:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      9) ldc.i8 [-9223372036854775808]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 34

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) -9223372036854775808
 1) -9223372036854775808
 2) -4611686018427387904
 3) -72057594037927936
 4) -36028797018963968
 5) -281474976710656
 6) -140737488355328
 7) -4294967296
 8) -2147483648
 9) -2
10) -1
11) -1
12) -1
###
> +0i4 shr S
+0 shr S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i4):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i4 shr S
+1 shr S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i4 shr S
-1 shr S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), -1:i4):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldc.i4.m1
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) -1
 1) -1
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +2i4 shr S
+2 shr S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i4 shr S
-2 shr S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-2:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      2) ldc.i4.s [-2]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) -2
 1) -2
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> 0x7FFFFFFFi4 shr S
2147483647 shr S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2147483647:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      5) ldc.i4 [2147483647]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 2147483647
 1) 2147483647
 2) 1073741823
 3) 16777215
 4) 8388607
 5) 65535
 6) 32767
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80000000i4 shr S
2147483648 shr S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-2147483648:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      5) ldc.i4 [-2147483648]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) -2147483648
 1) -2147483648
 2) -1073741824
 3) -16777216
 4) -8388608
 5) -65536
 6) -32768
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +0i2 shr S
+0 shr S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i2):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i2 shr S
+1 shr S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i2 shr S
-1 shr S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), -1:i2):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldc.i4.m1
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) -1
 1) -1
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +2i2 shr S
+2 shr S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i2 shr S
-2 shr S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-2:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      2) ldc.i4.s [-2]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) -2
 1) -2
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> 0x7FFFi2 shr S
32767 shr S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(32767:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      5) ldc.i4 [32767]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 32767
 1) 32767
 2) 16383
 3) 255
 4) 127
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x8000i2 shr S
32768 shr S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-32768:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      5) ldc.i4 [-32768]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) -32768
 1) -32768
 2) -16384
 3) -256
 4) -128
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +0i1 shr S
+0 shr S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i1):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i1 shr S
+1 shr S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 24

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i1 shr S
-1 shr S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), -1:i1):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldc.i4.m1
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) -1
 1) -1
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +2i1 shr S
+2 shr S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 24

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i1 shr S
-2 shr S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-2:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      2) ldc.i4.s [-2]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 25

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) -2
 1) -2
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> 0x7Fi1 shr S
127 shr S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(127:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      2) ldc.i4.s [127]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 25

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 127
 1) 127
 2) 63
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80i1 shr S
128 shr S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-128:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      2) ldc.i4.s [-128]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 25

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) -128
 1) -128
 2) -64
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +0ia shru S
+0 shru S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i):i*))
*** Warning: (5,9) Node: +0 shru S, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.0
      5) newobj ia(i4)
      1) ret
  Total Size: 7

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1ia shru S
+1 shru S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:i, Scope(1))):i*))
*** Warning: (5,9) Node: +1 shru S, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.1
      5) newobj ia(i4)
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1ia shru S
-1 shru S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), -1:i):i*))
*** Warning: (5,9) Node: -1 shru S, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.m1
      5) newobj ia(i4)
      1) ret
  Total Size: 7

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) -1
 1) -1
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +2ia shru S
+2 shru S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:i, Scope(1))):i*))
*** Warning: (5,9) Node: +2 shru S, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.2
      5) newobj ia(i4)
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2ia shru S
-2 shru S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-2:i, Scope(1))):i*))
*** Warning: (5,9) Node: -2 shru S, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      2) ldc.i4.s [-2]
      5) newobj ia(i4)
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) -2
 1) -2
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> 0x7FFFFFFFFFFFFFFFia  shru S
9223372036854775807 shru S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(9223372036854775807:i, Scope(1))):i*))
*** Warning: (22,26) Node: 9223372036854775807 shru S, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) unbox.any [ia]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 9223372036854775807
 1) 9223372036854775807
 2) 4611686018427387903
 3) 72057594037927935
 4) 36028797018963967
 5) 281474976710655
 6) 140737488355327
 7) 4294967295
 8) 2147483647
 9) 1
10) 0
11) 0
12) 0
###
> -0x8000000000000000ia shru S
-9223372036854775808 shru S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-9223372036854775808:i, Scope(1))):i*))
*** Warning: (22,26) Node: -9223372036854775808 shru S, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) unbox.any [ia]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) -9223372036854775808
 1) -9223372036854775808
 2) -4611686018427387904
 3) -72057594037927936
 4) -36028797018963968
 5) -281474976710656
 6) -140737488355328
 7) -4294967296
 8) -2147483648
 9) -2
10) -1
11) -1
12) -1
###
> +0i8 shru S
+0 shru S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i8):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldc.i4.0
      1) conv.i8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i8 shru S
+1 shru S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(1:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) conv.i8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.i8
  Label [1]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i8 shru S
-1 shru S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(-1:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.m1
      1) conv.i8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.i8
  Label [1]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) -1
 1) -1
 2) 9223372036854775807
 3) 144115188075855871
 4) 72057594037927935
 5) 562949953421311
 6) 281474976710655
 7) 8589934591
 8) 4294967295
 9) 3
10) 1
11) 0
12) 0
###
> +2i8 shru S
+2 shru S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) conv.i8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.i8
  Label [1]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i8 shru S
-2 shru S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(-2:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [-2]
      1) conv.i8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.i8
  Label [1]:
      1) ret
  Total Size: 31

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) -2
 1) -2
 2) 9223372036854775807
 3) 144115188075855871
 4) 72057594037927935
 5) 562949953421311
 6) 281474976710655
 7) 8589934591
 8) 4294967295
 9) 3
10) 1
11) 0
12) 0
###
> 0x7FFFFFFFFFFFFFFFi8 shru S
9223372036854775807 shru S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(9223372036854775807:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      9) ldc.i8 [9223372036854775807]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.i8
  Label [1]:
      1) ret
  Total Size: 37

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 9223372036854775807
 1) 9223372036854775807
 2) 4611686018427387903
 3) 72057594037927935
 4) 36028797018963967
 5) 281474976710655
 6) 140737488355327
 7) 4294967295
 8) 2147483647
 9) 1
10) 0
11) 0
12) 0
###
> 0x8000000000000000i8 shru S
9223372036854775808 shru S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(-9223372036854775808:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      9) ldc.i8 [-9223372036854775808]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.i8
  Label [1]:
      1) ret
  Total Size: 37

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) -9223372036854775808
 1) -9223372036854775808
 2) 4611686018427387904
 3) 72057594037927936
 4) 36028797018963968
 5) 281474976710656
 6) 140737488355328
 7) 4294967296
 8) 2147483648
 9) 2
10) 1
11) 0
12) 0
###
> +0i4 shru S
+0 shru S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i4):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i4 shru S
+1 shru S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(1:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i4 shru S
-1 shru S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(-1:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.m1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) -1
 1) -1
 2) 2147483647
 3) 33554431
 4) 16777215
 5) 131071
 6) 65535
 7) 1
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +2i4 shru S
+2 shru S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i4 shru S
-2 shru S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(-2:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [-2]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) -2
 1) -2
 2) 2147483647
 3) 33554431
 4) 16777215
 5) 131071
 6) 65535
 7) 1
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFFFFFi4 shru S
2147483647 shru S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2147483647:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [2147483647]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 2147483647
 1) 2147483647
 2) 1073741823
 3) 16777215
 4) 8388607
 5) 65535
 6) 32767
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80000000i4 shru S
2147483648 shru S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(-2147483648:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [-2147483648]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) -2147483648
 1) -2147483648
 2) 1073741824
 3) 16777216
 4) 8388608
 5) 65536
 6) 32768
 7) 1
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +0i2 shru S
+0 shru S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i2):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i2 shru S
+1 shru S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(1:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) conv.u2
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i2 shru S
-1 shru S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(-1:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.m1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) conv.u2
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) -1
 1) -1
 2) 32767
 3) 511
 4) 255
 5) 1
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +2i2 shru S
+2 shru S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) conv.u2
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i2 shru S
-2 shru S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(-2:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [-2]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) conv.u2
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) -2
 1) -2
 2) 32767
 3) 511
 4) 255
 5) 1
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFi2 shru S
32767 shru S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(32767:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [32767]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) conv.u2
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 33

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 32767
 1) 32767
 2) 16383
 3) 255
 4) 127
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x8000i2 shru S
32768 shru S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(-32768:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [-32768]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) conv.u2
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 33

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) -32768
 1) -32768
 2) 16384
 3) 256
 4) 128
 5) 1
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +0i1 shru S
+0 shru S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i1):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i1 shru S
+1 shru S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(1:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) conv.u1
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i1 shru S
-1 shru S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(-1:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldc.i4.m1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) conv.u1
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) -1
 1) -1
 2) 127
 3) 1
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +2i1 shru S
+2 shru S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) conv.u1
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i1 shru S
-2 shru S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(-2:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [-2]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) conv.u1
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) -2
 1) -2
 2) 127
 3) 1
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7Fi1 shru S
127 shru S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(127:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [127]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) conv.u1
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 127
 1) 127
 2) 63
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80i1 shru S
128 shru S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(-128:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [-128]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) conv.u1
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) -128
 1) -128
 2) 64
 3) 1
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +0ia shri S
+0 shri S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.0
      5) newobj ia(i4)
      1) ret
  Total Size: 7

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1ia shri S
+1 shri S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.1
      5) newobj ia(i4)
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1ia shri S
-1 shri S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), -1:i):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.m1
      5) newobj ia(i4)
      1) ret
  Total Size: 7

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) -1
 1) -1
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +2ia shri S
+2 shri S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldc.i4.2
      5) newobj ia(i4)
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2ia shri S
-2 shri S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-2:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      2) ldc.i4.s [-2]
      5) newobj ia(i4)
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) -2
 1) -2
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> 0x7FFFFFFFFFFFFFFFia  shri S
9223372036854775807 shri S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(9223372036854775807:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) unbox.any [ia]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) 9223372036854775807
 1) 9223372036854775807
 2) 4611686018427387903
 3) 72057594037927935
 4) 36028797018963967
 5) 281474976710655
 6) 140737488355327
 7) 4294967295
 8) 2147483647
 9) 1
10) 0
11) 0
12) 0
###
> -0x8000000000000000ia shri S
-9223372036854775808 shri S : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-9223372036854775808:i, Scope(1))):i*))
// (∂.S:i8*) : i*
ForEach_1(Arr<obj>, i8):ia
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) unbox.any [ia]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,ia>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i*
Sequence: Seq<ia>
 0) -9223372036854775808
 1) -9223372036854775808
 2) -4611686018427387904
 3) -72057594037927936
 4) -36028797018963968
 5) -281474976710656
 6) -140737488355328
 7) -4294967296
 8) -2147483648
 9) -2
10) -1
11) -1
12) -1
###
> +0i8 shri S
+0 shri S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i8):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldc.i4.0
      1) conv.i8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i8 shri S
+1 shri S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldc.i4.1
      1) conv.i8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i8 shri S
-1 shri S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), -1:i8):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldc.i4.m1
      1) conv.i8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) -1
 1) -1
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +2i8 shri S
+2 shri S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldc.i4.2
      1) conv.i8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i8 shri S
-2 shri S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-2:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      2) ldc.i4.s [-2]
      1) conv.i8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) -2
 1) -2
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> 0x7FFFFFFFFFFFFFFFi8 shri S
9223372036854775807 shri S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(9223372036854775807:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      9) ldc.i8 [9223372036854775807]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 34

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) 9223372036854775807
 1) 9223372036854775807
 2) 4611686018427387903
 3) 72057594037927935
 4) 36028797018963967
 5) 281474976710655
 6) 140737488355327
 7) 4294967295
 8) 2147483647
 9) 1
10) 0
11) 0
12) 0
###
> 0x8000000000000000i8 shri S
9223372036854775808 shri S : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-9223372036854775808:i8, Scope(1))):i8*))
// (∂.S:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      9) ldc.i8 [-9223372036854775808]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 34

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i8*
Sequence: Seq<i8>
 0) -9223372036854775808
 1) -9223372036854775808
 2) -4611686018427387904
 3) -72057594037927936
 4) -36028797018963968
 5) -281474976710656
 6) -140737488355328
 7) -4294967296
 8) -2147483648
 9) -2
10) -1
11) -1
12) -1
###
> +0i4 shri S
+0 shri S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i4):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i4 shri S
+1 shri S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i4 shri S
-1 shri S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), -1:i4):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldc.i4.m1
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) -1
 1) -1
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +2i4 shri S
+2 shri S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i4 shri S
-2 shri S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-2:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      2) ldc.i4.s [-2]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) -2
 1) -2
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> 0x7FFFFFFFi4 shri S
2147483647 shri S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2147483647:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      5) ldc.i4 [2147483647]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) 2147483647
 1) 2147483647
 2) 1073741823
 3) 16777215
 4) 8388607
 5) 65535
 6) 32767
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80000000i4 shri S
2147483648 shri S : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-2147483648:i4, Scope(1))):i4*))
// (∂.S:i8*) : i4*
ForEach_1(Arr<obj>, i8):i4
      5) ldc.i4 [-2147483648]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i4*
Sequence: Seq<i4>
 0) -2147483648
 1) -2147483648
 2) -1073741824
 3) -16777216
 4) -8388608
 5) -65536
 6) -32768
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +0i2 shri S
+0 shri S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i2):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i2 shri S
+1 shri S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i2 shri S
-1 shri S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), -1:i2):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldc.i4.m1
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) -1
 1) -1
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +2i2 shri S
+2 shri S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i2 shri S
-2 shri S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-2:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      2) ldc.i4.s [-2]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) -2
 1) -2
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> 0x7FFFi2 shri S
32767 shri S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(32767:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      5) ldc.i4 [32767]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) 32767
 1) 32767
 2) 16383
 3) 255
 4) 127
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x8000i2 shri S
32768 shri S : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-32768:i2, Scope(1))):i2*))
// (∂.S:i8*) : i2*
ForEach_1(Arr<obj>, i8):i2
      5) ldc.i4 [-32768]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i2*
Sequence: Seq<i2>
 0) -32768
 1) -32768
 2) -16384
 3) -256
 4) -128
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +0i1 shri S
+0 shri S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:i1):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> +1i1 shri S
+1 shri S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 24

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -1i1 shri S
-1 shri S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), -1:i1):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldc.i4.m1
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) -1
 1) -1
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> +2i1 shri S
+2 shri S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 24

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> -2i1 shri S
-2 shri S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-2:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      2) ldc.i4.s [-2]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 25

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) -2
 1) -2
 2) -1
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> 0x7Fi1 shri S
127 shri S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(127:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      2) ldc.i4.s [127]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 25

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) 127
 1) 127
 2) 63
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80i1 shri S
128 shri S : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(-128:i1, Scope(1))):i1*))
// (∂.S:i8*) : i1*
ForEach_1(Arr<obj>, i8):i1
      2) ldc.i4.s [-128]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 25

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to i1*
Sequence: Seq<i1>
 0) -128
 1) -128
 2) -64
 3) -1
 4) -1
 5) -1
 6) -1
 7) -1
 8) -1
 9) -1
10) -1
11) -1
12) -1
###
> 0u8 shl S
0 shl S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u8):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldc.i4.0
      1) conv.u8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u8 shl S
1 shl S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(1:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) conv.u8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 1
 1) 1
 2) 2
 3) 128
 4) 256
 5) 32768
 6) 65536
 7) 2147483648
 8) 4294967296
 9) 4611686018427387904
10) 9223372036854775808
11) 0
12) 0
###
> 2u8 shl S
2 shl S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(2:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) conv.u8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 2
 1) 2
 2) 4
 3) 256
 4) 512
 5) 65536
 6) 131072
 7) 4294967296
 8) 8589934592
 9) 9223372036854775808
10) 0
11) 0
12) 0
###
> 0x7FFFFFFFFFFFFFFFu8 shl S
9223372036854775807 shl S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(9223372036854775807:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      9) ldc.i8 [9223372036854775807]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      1) ret
  Total Size: 37

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 9223372036854775807
 1) 9223372036854775807
 2) 18446744073709551614
 3) 18446744073709551488
 4) 18446744073709551360
 5) 18446744073709518848
 6) 18446744073709486080
 7) 18446744071562067968
 8) 18446744069414584320
 9) 13835058055282163712
10) 9223372036854775808
11) 0
12) 0
###
> 0x8000000000000000u8 shl S
9223372036854775808 shl S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(9223372036854775808:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      9) ldc.i8 [-9223372036854775808]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      1) ret
  Total Size: 37

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 9223372036854775808
 1) 9223372036854775808
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0u4 shl S
0 shl S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u4):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u4 shl S
1 shl S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(1:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 1
 1) 1
 2) 2
 3) 128
 4) 256
 5) 32768
 6) 65536
 7) 2147483648
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u4 shl S
2 shl S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(2:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 2
 1) 2
 2) 4
 3) 256
 4) 512
 5) 65536
 6) 131072
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFFFFFu4 shl S
2147483647 shl S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(2147483647:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [2147483647]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 2147483647
 1) 2147483647
 2) 4294967294
 3) 4294967168
 4) 4294967040
 5) 4294934528
 6) 4294901760
 7) 2147483648
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80000000u4 shl S
2147483648 shl S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(2147483648:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [-2147483648]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 2147483648
 1) 2147483648
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0u2 shl S
0 shl S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u2):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u2 shl S
1 shl S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(1:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.u2
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 1
 1) 1
 2) 2
 3) 128
 4) 256
 5) 32768
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u2 shl S
2 shl S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(2:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.u2
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 2
 1) 2
 2) 4
 3) 256
 4) 512
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFu2 shl S
32767 shl S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(32767:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [32767]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.u2
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 33

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 32767
 1) 32767
 2) 65534
 3) 65408
 4) 65280
 5) 32768
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x8000u2 shl S
32768 shl S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(32768:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [32768]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.u2
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 33

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 32768
 1) 32768
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0u1 shl S
0 shl S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u1):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u1 shl S
1 shl S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(1:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.u1
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 1
 1) 1
 2) 2
 3) 128
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u1 shl S
2 shl S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(2:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.u1
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 2
 1) 2
 2) 4
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7Fu1 shl S
127 shl S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(127:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [127]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.u1
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 127
 1) 127
 2) 254
 3) 128
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80u1 shl S
128 shl S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shl(128:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [128]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shl
      1) conv.u1
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 128
 1) 128
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0u8 shr S
0 shr S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u8):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldc.i4.0
      1) conv.u8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u8 shr S
1 shr S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(1:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) conv.u8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u8 shr S
2 shr S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) conv.u8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFFFFFFFFFFFFFu8 shr S
9223372036854775807 shr S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(9223372036854775807:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      9) ldc.i8 [9223372036854775807]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      1) ret
  Total Size: 37

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 9223372036854775807
 1) 9223372036854775807
 2) 4611686018427387903
 3) 72057594037927935
 4) 36028797018963967
 5) 281474976710655
 6) 140737488355327
 7) 4294967295
 8) 2147483647
 9) 1
10) 0
11) 0
12) 0
###
> 0x8000000000000000u8 shr S
9223372036854775808 shr S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(9223372036854775808:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      9) ldc.i8 [-9223372036854775808]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      1) ret
  Total Size: 37

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 9223372036854775808
 1) 9223372036854775808
 2) 4611686018427387904
 3) 72057594037927936
 4) 36028797018963968
 5) 281474976710656
 6) 140737488355328
 7) 4294967296
 8) 2147483648
 9) 2
10) 1
11) 0
12) 0
###
> 0u4 shr S
0 shr S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u4):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u4 shr S
1 shr S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(1:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u4 shr S
2 shr S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFFFFFu4 shr S
2147483647 shr S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2147483647:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [2147483647]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 2147483647
 1) 2147483647
 2) 1073741823
 3) 16777215
 4) 8388607
 5) 65535
 6) 32767
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80000000u4 shr S
2147483648 shr S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2147483648:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [-2147483648]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 2147483648
 1) 2147483648
 2) 1073741824
 3) 16777216
 4) 8388608
 5) 65536
 6) 32768
 7) 1
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0u2 shr S
0 shr S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u2):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u2 shr S
1 shr S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(1:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u2 shr S
2 shr S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFu2 shr S
32767 shr S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(32767:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [32767]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 32767
 1) 32767
 2) 16383
 3) 255
 4) 127
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x8000u2 shr S
32768 shr S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(32768:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [32768]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 32768
 1) 32768
 2) 16384
 3) 256
 4) 128
 5) 1
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0u1 shr S
0 shr S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u1):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u1 shr S
1 shr S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(1:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u1 shr S
2 shr S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7Fu1 shr S
127 shr S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(127:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [127]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 127
 1) 127
 2) 63
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80u1 shr S
128 shr S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(128:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [128]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 31

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 128
 1) 128
 2) 64
 3) 1
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0u8 shru S
0 shru S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u8):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldc.i4.0
      1) conv.u8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u8 shru S
1 shru S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(1:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) conv.u8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u8 shru S
2 shru S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) conv.u8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFFFFFFFFFFFFFu8 shru S
9223372036854775807 shru S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(9223372036854775807:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      9) ldc.i8 [9223372036854775807]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      1) ret
  Total Size: 37

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 9223372036854775807
 1) 9223372036854775807
 2) 4611686018427387903
 3) 72057594037927935
 4) 36028797018963967
 5) 281474976710655
 6) 140737488355327
 7) 4294967295
 8) 2147483647
 9) 1
10) 0
11) 0
12) 0
###
> 0x8000000000000000u8 shru S
9223372036854775808 shru S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(9223372036854775808:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldarg.1 [i8]
      2) ldc.i4.s [64]
      1) conv.i8
      5) bge [0]
      9) ldc.i8 [-9223372036854775808]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
      1) conv.u8
  Label [1]:
      1) ret
  Total Size: 37

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 9223372036854775808
 1) 9223372036854775808
 2) 4611686018427387904
 3) 72057594037927936
 4) 36028797018963968
 5) 281474976710656
 6) 140737488355328
 7) 4294967296
 8) 2147483648
 9) 2
10) 1
11) 0
12) 0
###
> 0u4 shru S
0 shru S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u4):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u4 shru S
1 shru S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(1:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u4 shru S
2 shru S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFFFFFu4 shru S
2147483647 shru S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2147483647:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [2147483647]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 2147483647
 1) 2147483647
 2) 1073741823
 3) 16777215
 4) 8388607
 5) 65535
 6) 32767
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80000000u4 shru S
2147483648 shru S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2147483648:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldarg.1 [i8]
      2) ldc.i4.s [32]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [-2147483648]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 2147483648
 1) 2147483648
 2) 1073741824
 3) 16777216
 4) 8388608
 5) 65536
 6) 32768
 7) 1
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0u2 shru S
0 shru S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u2):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u2 shru S
1 shru S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(1:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u2 shru S
2 shru S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFu2 shru S
32767 shru S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(32767:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [32767]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 32767
 1) 32767
 2) 16383
 3) 255
 4) 127
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x8000u2 shru S
32768 shru S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(32768:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldarg.1 [i8]
      2) ldc.i4.s [16]
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [32768]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 32

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 32768
 1) 32768
 2) 16384
 3) 256
 4) 128
 5) 1
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0u1 shru S
0 shru S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u1):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u1 shru S
1 shru S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(1:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u1 shru S
2 shru S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(2:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7Fu1 shru S
127 shru S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(127:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      2) ldc.i4.s [127]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 28

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 127
 1) 127
 2) 63
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80u1 shru S
128 shru S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shru(128:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldarg.1 [i8]
      1) ldc.i4.8
      1) conv.i8
      5) bge [0]
      5) ldc.i4 [128]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [1]
      1) ldarg.1 [i8]
      1) conv.i4
      1) shr.un
      5) br [1]
  Label [0]:
      1) ldc.i4.0
  Label [1]:
      1) ret
  Total Size: 31

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 128
 1) 128
 2) 64
 3) 1
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0u8 shri S
0 shri S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u8):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldc.i4.0
      1) conv.u8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u8 shri S
1 shri S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldc.i4.1
      1) conv.u8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u8 shri S
2 shri S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      1) ldc.i4.2
      1) conv.u8
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFFFFFFFFFFFFFu8 shri S
9223372036854775807 shri S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(9223372036854775807:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      9) ldc.i8 [9223372036854775807]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 34

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 9223372036854775807
 1) 9223372036854775807
 2) 4611686018427387903
 3) 72057594037927935
 4) 36028797018963967
 5) 281474976710655
 6) 140737488355327
 7) 4294967295
 8) 2147483647
 9) 1
10) 0
11) 0
12) 0
###
> 0x8000000000000000u8 shri S
9223372036854775808 shri S : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(9223372036854775808:u8, Scope(1))):u8*))
// (∂.S:i8*) : u8*
ForEach_1(Arr<obj>, i8):u8
      9) ldc.i8 [-9223372036854775808]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [64]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [63]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 34

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u8*
Sequence: Seq<u8>
 0) 9223372036854775808
 1) 9223372036854775808
 2) 13835058055282163712
 3) 18374686479671623680
 4) 18410715276690587648
 5) 18446462598732840960
 6) 18446603336221196288
 7) 18446744069414584320
 8) 18446744071562067968
 9) 18446744073709551614
10) 18446744073709551615
11) 18446744073709551615
12) 18446744073709551615
###
> 0u4 shri S
0 shri S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u4):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u4 shri S
1 shri S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u4 shri S
2 shri S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFFFFFu4 shri S
2147483647 shri S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2147483647:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      5) ldc.i4 [2147483647]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 2147483647
 1) 2147483647
 2) 1073741823
 3) 16777215
 4) 8388607
 5) 65535
 6) 32767
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80000000u4 shri S
2147483648 shri S : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2147483648:u4, Scope(1))):u4*))
// (∂.S:i8*) : u4*
ForEach_1(Arr<obj>, i8):u4
      5) ldc.i4 [-2147483648]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [32]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [31]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 30

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u4>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u4*
Sequence: Seq<u4>
 0) 2147483648
 1) 2147483648
 2) 3221225472
 3) 4278190080
 4) 4286578688
 5) 4294901760
 6) 4294934528
 7) 4294967295
 8) 4294967295
 9) 4294967295
10) 4294967295
11) 4294967295
12) 4294967295
###
> 0u2 shri S
0 shri S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u2):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u2 shri S
1 shri S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) conv.i2
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u2 shri S
2 shri S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) conv.i2
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 27

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7FFFu2 shri S
32767 shri S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(32767:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      5) ldc.i4 [32767]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) conv.i2
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 31

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 32767
 1) 32767
 2) 16383
 3) 255
 4) 127
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x8000u2 shri S
32768 shri S : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(32768:u2, Scope(1))):u2*))
// (∂.S:i8*) : u2*
ForEach_1(Arr<obj>, i8):u2
      5) ldc.i4 [32768]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) conv.i2
      1) ldarg.1 [i8]
      1) dup
      2) ldc.i4.s [16]
      1) conv.i8
      5) blt [1]
      1) pop
      2) ldc.i4.s [15]
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 31

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u2>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u2*
Sequence: Seq<u2>
 0) 32768
 1) 32768
 2) 49152
 3) 65280
 4) 65408
 5) 65535
 6) 65535
 7) 65535
 8) 65535
 9) 65535
10) 65535
11) 65535
12) 65535
###
> 0u1 shri S
0 shri S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), 0:u1):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 1u1 shri S
1 shri S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(1:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldc.i4.1
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) conv.i1
      1) ldarg.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 25

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 1
 1) 1
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 2u1 shri S
2 shri S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(2:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      1) ldc.i4.2
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) conv.i1
      1) ldarg.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 25

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 2
 1) 2
 2) 1
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x7Fu1 shri S
127 shri S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(127:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      2) ldc.i4.s [127]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) conv.i1
      1) ldarg.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 26

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 127
 1) 127
 2) 63
 3) 0
 4) 0
 5) 0
 6) 0
 7) 0
 8) 0
 9) 0
10) 0
11) 0
12) 0
###
> 0x80u1 shri S
128 shri S : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(S), Shri(128:u1, Scope(1))):u1*))
// (∂.S:i8*) : u1*
ForEach_1(Arr<obj>, i8):u1
      5) ldc.i4 [128]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) conv.i1
      1) ldarg.1 [i8]
      1) dup
      1) ldc.i4.8
      1) conv.i8
      5) blt [1]
      1) pop
      1) ldc.i4.7
      1) conv.i8
  Label [1]:
      1) conv.i4
      1) shr
  Label [0]:
      1) ret
  Total Size: 29

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,u1>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (S:i8*) to u1*
Sequence: Seq<u1>
 0) 128
 1) 128
 2) 192
 3) 255
 4) 255
 5) 255
 6) 255
 7) 255
 8) 255
 9) 255
10) 255
11) 255
12) 255
###

**** New definitions: B, type: b
**** New definitions: S, type: i8*

> S->Map((B shl it, B shr it, B shru it, B shri it))
S->Map((B shl it, B shr it, B shru it, B shri it)) : (b, b, b, b)*
BndKind:Call, Type:(b, b, b, b)*, Bnd:(Call(∂.ForEach([map:1] Global(S), (Shl(Global(B), Scope(1)), Shru(Global(B), Scope(1)), Shru(Global(B), Scope(1)), Global(B)):(b, b, b, b)):(b, b, b, b)*))
// (∂.S:i8*, ∂.B:b) : (b, b, b, b)*
ForEach_1(Arr<obj>, i8):(bool,bool,bool,bool)
      5) newobj (bool,bool,bool,bool)()
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [(bool)]
      5) ldfld (bool)::_F0:bool
      1) dup
      5) brfalse [0]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      2) cgt
      1) xor
  Label [0]:
      5) stfld (bool,bool,bool,bool)::_F0:bool
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [(bool)]
      5) ldfld (bool)::_F0:bool
      1) dup
      5) brfalse [1]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      2) cgt
      1) xor
  Label [1]:
      5) stfld (bool,bool,bool,bool)::_F1:bool
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [(bool)]
      5) ldfld (bool)::_F0:bool
      1) dup
      5) brfalse [2]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      2) cgt
      1) xor
  Label [2]:
      5) stfld (bool,bool,bool,bool)::_F2:bool
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [(bool)]
      5) ldfld (bool)::_F0:bool
      5) stfld (bool,bool,bool,bool)::_F3:bool
      1) ret
  Total Size: 114

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):bool
      1) stloc.1 [bool]
      5) newobj (bool)()
      1) stloc.2 [(bool)]
      1) ldloc.2 [(bool)]
      1) ldloc.1 [bool]
      5) stfld (bool)::_F0:bool
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<i8,(bool,bool,bool,bool)>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.3
      5) newarr [obj]
      1) dup
      1) ldc.i4.2
      1) ldloc.2 [(bool)]
      5) stelem [(bool)]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,(bool,bool,bool,bool)>):Seq<(bool,bool,bool,bool)>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(bool,bool,bool,bool)>):Seq<(bool,bool,bool,bool)>
      1) ret
  Total Size: 79

Func sig: (S:i8*, B:b) to (b, b, b, b)*
Sequence: Seq<(bool,bool,bool,bool)>
 0) (true , true , true , true )
 1) (true , true , true , true )
 2) (true , true , true , true )
 3) (false, false, false, true )
 4) (false, false, false, true )
###

**** New definitions: B, type: b

> S->Map((B shl it, B shr it, B shru it, B shri it))
S->Map((B shl it, B shr it, B shru it, B shri it)) : (b, b, b, b)*
BndKind:Call, Type:(b, b, b, b)*, Bnd:(Call(∂.ForEach([map:1] Global(S), (Shl(Global(B), Scope(1)), Shru(Global(B), Scope(1)), Shru(Global(B), Scope(1)), Global(B)):(b, b, b, b)):(b, b, b, b)*))
// (∂.S:i8*, ∂.B:b) : (b, b, b, b)*
ForEach_1(Arr<obj>, i8):(bool,bool,bool,bool)
      5) newobj (bool,bool,bool,bool)()
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [(bool)]
      5) ldfld (bool)::_F0:bool
      1) dup
      5) brfalse [0]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      2) cgt
      1) xor
  Label [0]:
      5) stfld (bool,bool,bool,bool)::_F0:bool
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [(bool)]
      5) ldfld (bool)::_F0:bool
      1) dup
      5) brfalse [1]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      2) cgt
      1) xor
  Label [1]:
      5) stfld (bool,bool,bool,bool)::_F1:bool
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [(bool)]
      5) ldfld (bool)::_F0:bool
      1) dup
      5) brfalse [2]
      1) ldarg.1 [i8]
      1) ldc.i4.0
      1) conv.i8
      2) cgt
      1) xor
  Label [2]:
      5) stfld (bool,bool,bool,bool)::_F2:bool
      1) dup
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [(bool)]
      5) ldfld (bool)::_F0:bool
      5) stfld (bool,bool,bool,bool)::_F3:bool
      1) ret
  Total Size: 114

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):bool
      1) stloc.1 [bool]
      5) newobj (bool)()
      1) stloc.2 [(bool)]
      1) ldloc.2 [(bool)]
      1) ldloc.1 [bool]
      5) stfld (bool)::_F0:bool
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<i8,(bool,bool,bool,bool)>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.3
      5) newarr [obj]
      1) dup
      1) ldc.i4.2
      1) ldloc.2 [(bool)]
      5) stelem [(bool)]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,(bool,bool,bool,bool)>):Seq<(bool,bool,bool,bool)>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<(bool,bool,bool,bool)>):Seq<(bool,bool,bool,bool)>
      1) ret
  Total Size: 79

Func sig: (S:i8*, B:b) to (b, b, b, b)*
Sequence: Seq<(bool,bool,bool,bool)>
 0) (false, false, false, false)
 1) (false, false, false, false)
 2) (false, false, false, false)
 3) (false, false, false, false)
 4) (false, false, false, false)
###

**** New definitions: I_s, type: i*
**** New definitions: I8s, type: i8*
**** New definitions: I4s, type: i4*
**** New definitions: I2s, type: i2*
**** New definitions: I1s, type: i1*
**** New definitions: U8s, type: u8*
**** New definitions: U4s, type: u4*
**** New definitions: U2s, type: u2*
**** New definitions: U1s, type: u1*

> I_s shl 0
I_s shl 0 : i*
BndKind:Global, Type:i*, Bnd:(Global(I_s))
// (∂.I_s:i*) : i*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ret
  Total Size: 11

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 9223372036854775807
 6) -9223372036854775808
###
> I_s shl 1
I_s shl 1 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shl(Scope(1), 1:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      1) ldc.i4.1
      5) call static ia::op_LeftShift(ia, i4):ia
      1) ret
  Total Size: 8

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 2
 2) -2
 3) 4
 4) -4
 5) 18446744073709551614
 6) -18446744073709551616
###
> I_s shl 7
I_s shl 7 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shl(Scope(1), 7:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      1) ldc.i4.7
      5) call static ia::op_LeftShift(ia, i4):ia
      1) ret
  Total Size: 8

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 128
 2) -128
 3) 256
 4) -256
 5) 1180591620717411303296
 6) -1180591620717411303424
###
> I_s shl 15
I_s shl 15 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shl(Scope(1), 15:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [15]
      5) call static ia::op_LeftShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 32768
 2) -32768
 3) 65536
 4) -65536
 5) 302231454903657293643776
 6) -302231454903657293676544
###
> I_s shl 31
I_s shl 31 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shl(Scope(1), 31:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [31]
      5) call static ia::op_LeftShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 2147483648
 2) -2147483648
 3) 4294967296
 4) -4294967296
 5) 19807040628566084396238503936
 6) -19807040628566084398385987584
###
> I_s shl 62
I_s shl 62 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shl(Scope(1), 62:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [62]
      5) call static ia::op_LeftShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 4611686018427387904
 2) -4611686018427387904
 3) 9223372036854775808
 4) -9223372036854775808
 5) 42535295865117307928310139910543638528
 6) -42535295865117307932921825928971026432
###
> I_s shl 63
I_s shl 63 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shl(Scope(1), 63:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [63]
      5) call static ia::op_LeftShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 9223372036854775808
 2) -9223372036854775808
 3) 18446744073709551616
 4) -18446744073709551616
 5) 85070591730234615856620279821087277056
 6) -85070591730234615865843651857942052864
###
> I_s shl 64
I_s shl 64 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shl(Scope(1), 64:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [64]
      5) call static ia::op_LeftShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 18446744073709551616
 2) -18446744073709551616
 3) 36893488147419103232
 4) -36893488147419103232
 5) 170141183460469231713240559642174554112
 6) -170141183460469231731687303715884105728
###
> I8s shl 0
I8s shl 0 : i8*
BndKind:Global, Type:i8*, Bnd:(Global(I8s))
// (∂.I8s:i8*) : i8*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ret
  Total Size: 11

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 9223372036854775807
 6) -9223372036854775808
###
> I8s shl 1
I8s shl 1 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shl(Scope(1), 1:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      1) ldc.i4.1
      1) shl
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 2
 2) -2
 3) 4
 4) -4
 5) -2
 6) 0
###
> I8s shl 7
I8s shl 7 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shl(Scope(1), 7:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      1) ldc.i4.7
      1) shl
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 128
 2) -128
 3) 256
 4) -256
 5) -128
 6) 0
###
> I8s shl 15
I8s shl 15 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shl(Scope(1), 15:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [15]
      1) shl
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 32768
 2) -32768
 3) 65536
 4) -65536
 5) -32768
 6) 0
###
> I8s shl 31
I8s shl 31 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shl(Scope(1), 31:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [31]
      1) shl
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 2147483648
 2) -2147483648
 3) 4294967296
 4) -4294967296
 5) -2147483648
 6) 0
###
> I8s shl 62
I8s shl 62 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shl(Scope(1), 62:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [62]
      1) shl
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 4611686018427387904
 2) -4611686018427387904
 3) -9223372036854775808
 4) -9223372036854775808
 5) -4611686018427387904
 6) 0
###
> I8s shl 63
I8s shl 63 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shl(Scope(1), 63:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [63]
      1) shl
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) -9223372036854775808
 2) -9223372036854775808
 3) 0
 4) 0
 5) -9223372036854775808
 6) 0
###
> I8s shl 64
I8s shl 64 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), 0:i8):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldc.i4.0
      1) conv.i8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> I4s shl 0
I4s shl 0 : i4*
BndKind:Global, Type:i4*, Bnd:(Global(I4s))
// (∂.I4s:i4*) : i4*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ret
  Total Size: 11

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 2147483647
 6) -2147483648
###
> I4s shl 1
I4s shl 1 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shl(Scope(1), 1:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      1) ldc.i4.1
      1) shl
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 2
 2) -2
 3) 4
 4) -4
 5) -2
 6) 0
###
> I4s shl 7
I4s shl 7 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shl(Scope(1), 7:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      1) ldc.i4.7
      1) shl
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 128
 2) -128
 3) 256
 4) -256
 5) -128
 6) 0
###
> I4s shl 15
I4s shl 15 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shl(Scope(1), 15:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      2) ldc.i4.s [15]
      1) shl
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 32768
 2) -32768
 3) 65536
 4) -65536
 5) -32768
 6) 0
###
> I4s shl 31
I4s shl 31 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shl(Scope(1), 31:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      2) ldc.i4.s [31]
      1) shl
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) -2147483648
 2) -2147483648
 3) 0
 4) 0
 5) -2147483648
 6) 0
###
> I4s shl 32
I4s shl 32 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), 0:i4):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> I2s shl 0
I2s shl 0 : i2*
BndKind:Global, Type:i2*, Bnd:(Global(I2s))
// (∂.I2s:i2*) : i2*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ret
  Total Size: 11

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 32767
 6) -32768
###
> I2s shl 1
I2s shl 1 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), Shl(Scope(1), 1:i8)):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldarg.1 [i2]
      1) ldc.i4.1
      1) shl
      1) conv.i2
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 2
 2) -2
 3) 4
 4) -4
 5) -2
 6) 0
###
> I2s shl 7
I2s shl 7 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), Shl(Scope(1), 7:i8)):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldarg.1 [i2]
      1) ldc.i4.7
      1) shl
      1) conv.i2
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 128
 2) -128
 3) 256
 4) -256
 5) -128
 6) 0
###
> I2s shl 15
I2s shl 15 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), Shl(Scope(1), 15:i8)):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldarg.1 [i2]
      2) ldc.i4.s [15]
      1) shl
      1) conv.i2
      1) ret
  Total Size: 6

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) -32768
 2) -32768
 3) 0
 4) 0
 5) -32768
 6) 0
###
> I2s shl 16
I2s shl 16 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), 0:i2):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> I1s shl 0
I1s shl 0 : i1*
BndKind:Global, Type:i1*, Bnd:(Global(I1s))
// (∂.I1s:i1*) : i1*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ret
  Total Size: 11

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 127
 6) -128
###
> I1s shl 1
I1s shl 1 : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(I1s), Shl(Scope(1), 1:i8)):i1*))
// (∂.I1s:i1*) : i1*
ForEach_1(Arr<obj>, i1):i1
      1) ldarg.1 [i1]
      1) ldc.i4.1
      1) shl
      1) conv.i1
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i1,i1>]
      5) call static ForEachGen::Exec(Seq<i1>, Func<i1,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 2
 2) -2
 3) 4
 4) -4
 5) -2
 6) 0
###
> I1s shl 7
I1s shl 7 : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(I1s), Shl(Scope(1), 7:i8)):i1*))
// (∂.I1s:i1*) : i1*
ForEach_1(Arr<obj>, i1):i1
      1) ldarg.1 [i1]
      1) ldc.i4.7
      1) shl
      1) conv.i1
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i1,i1>]
      5) call static ForEachGen::Exec(Seq<i1>, Func<i1,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) -128
 2) -128
 3) 0
 4) 0
 5) -128
 6) 0
###
> I1s shl 8
I1s shl 8 : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(I1s), 0:i1):i1*))
// (∂.I1s:i1*) : i1*
ForEach_1(Arr<obj>, i1):i1
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i1,i1>]
      5) call static ForEachGen::Exec(Seq<i1>, Func<i1,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> I_s shr 0
I_s shr 0 : i*
BndKind:Global, Type:i*, Bnd:(Global(I_s))
// (∂.I_s:i*) : i*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ret
  Total Size: 11

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 9223372036854775807
 6) -9223372036854775808
###
> I_s shr 1
I_s shr 1 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 1:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      1) ldc.i4.1
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 8

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 1
 4) -1
 5) 4611686018427387903
 6) -4611686018427387904
###
> I_s shr 7
I_s shr 7 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 7:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      1) ldc.i4.7
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 8

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 72057594037927935
 6) -72057594037927936
###
> I_s shr 15
I_s shr 15 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 15:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [15]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 281474976710655
 6) -281474976710656
###
> I_s shr 31
I_s shr 31 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 31:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [31]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 4294967295
 6) -4294967296
###
> I_s shr 62
I_s shr 62 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 62:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [62]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 1
 6) -2
###
> I_s shr 63
I_s shr 63 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 63:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [63]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I_s shr 64
I_s shr 64 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 64:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [64]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I8s shr 0
I8s shr 0 : i8*
BndKind:Global, Type:i8*, Bnd:(Global(I8s))
// (∂.I8s:i8*) : i8*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ret
  Total Size: 11

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 9223372036854775807
 6) -9223372036854775808
###
> I8s shr 1
I8s shr 1 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shri(Scope(1), 1:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      1) ldc.i4.1
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) -1
 3) 1
 4) -1
 5) 4611686018427387903
 6) -4611686018427387904
###
> I8s shr 7
I8s shr 7 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shri(Scope(1), 7:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 72057594037927935
 6) -72057594037927936
###
> I8s shr 15
I8s shr 15 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shri(Scope(1), 15:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [15]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 281474976710655
 6) -281474976710656
###
> I8s shr 31
I8s shr 31 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shri(Scope(1), 31:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [31]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 4294967295
 6) -4294967296
###
> I8s shr 62
I8s shr 62 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shri(Scope(1), 62:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [62]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 1
 6) -2
###
> I8s shr 63
I8s shr 63 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shri(Scope(1), 63:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [63]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I8s shr 64
I8s shr 64 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shri(Scope(1), 63:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [63]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I4s shr 0
I4s shr 0 : i4*
BndKind:Global, Type:i4*, Bnd:(Global(I4s))
// (∂.I4s:i4*) : i4*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ret
  Total Size: 11

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 2147483647
 6) -2147483648
###
> I4s shr 1
I4s shr 1 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shri(Scope(1), 1:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      1) ldc.i4.1
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) -1
 3) 1
 4) -1
 5) 1073741823
 6) -1073741824
###
> I4s shr 7
I4s shr 7 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shri(Scope(1), 7:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 16777215
 6) -16777216
###
> I4s shr 15
I4s shr 15 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shri(Scope(1), 15:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      2) ldc.i4.s [15]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 65535
 6) -65536
###
> I4s shr 31
I4s shr 31 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shri(Scope(1), 31:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      2) ldc.i4.s [31]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I4s shr 32
I4s shr 32 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shri(Scope(1), 31:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      2) ldc.i4.s [31]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I2s shr 0
I2s shr 0 : i2*
BndKind:Global, Type:i2*, Bnd:(Global(I2s))
// (∂.I2s:i2*) : i2*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ret
  Total Size: 11

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 32767
 6) -32768
###
> I2s shr 1
I2s shr 1 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), Shri(Scope(1), 1:i8)):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldarg.1 [i2]
      1) ldc.i4.1
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) -1
 3) 1
 4) -1
 5) 16383
 6) -16384
###
> I2s shr 7
I2s shr 7 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), Shri(Scope(1), 7:i8)):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldarg.1 [i2]
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 255
 6) -256
###
> I2s shr 15
I2s shr 15 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), Shri(Scope(1), 15:i8)):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldarg.1 [i2]
      2) ldc.i4.s [15]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I2s shr 16
I2s shr 16 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), Shri(Scope(1), 15:i8)):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldarg.1 [i2]
      2) ldc.i4.s [15]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I1s shr 0
I1s shr 0 : i1*
BndKind:Global, Type:i1*, Bnd:(Global(I1s))
// (∂.I1s:i1*) : i1*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ret
  Total Size: 11

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 127
 6) -128
###
> I1s shr 1
I1s shr 1 : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(I1s), Shri(Scope(1), 1:i8)):i1*))
// (∂.I1s:i1*) : i1*
ForEach_1(Arr<obj>, i1):i1
      1) ldarg.1 [i1]
      1) ldc.i4.1
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i1,i1>]
      5) call static ForEachGen::Exec(Seq<i1>, Func<i1,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 0
 2) -1
 3) 1
 4) -1
 5) 63
 6) -64
###
> I1s shr 7
I1s shr 7 : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(I1s), Shri(Scope(1), 7:i8)):i1*))
// (∂.I1s:i1*) : i1*
ForEach_1(Arr<obj>, i1):i1
      1) ldarg.1 [i1]
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i1,i1>]
      5) call static ForEachGen::Exec(Seq<i1>, Func<i1,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I1s shr 8
I1s shr 8 : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(I1s), Shri(Scope(1), 7:i8)):i1*))
// (∂.I1s:i1*) : i1*
ForEach_1(Arr<obj>, i1):i1
      1) ldarg.1 [i1]
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i1,i1>]
      5) call static ForEachGen::Exec(Seq<i1>, Func<i1,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I_s shru 0
I_s shru 0 : i*
BndKind:Global, Type:i*, Bnd:(Global(I_s))
*** Warning: (4,8) Node: I_s shru 0, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.I_s:i*) : i*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ret
  Total Size: 11

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 9223372036854775807
 6) -9223372036854775808
###
> I_s shru 1
I_s shru 1 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 1:i8)):i*))
*** Warning: (4,8) Node: I_s shru 1, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      1) ldc.i4.1
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 8

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 1
 4) -1
 5) 4611686018427387903
 6) -4611686018427387904
###
> I_s shru 7
I_s shru 7 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 7:i8)):i*))
*** Warning: (4,8) Node: I_s shru 7, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      1) ldc.i4.7
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 8

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 72057594037927935
 6) -72057594037927936
###
> I_s shru 15
I_s shru 15 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 15:i8)):i*))
*** Warning: (4,8) Node: I_s shru 15, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [15]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 281474976710655
 6) -281474976710656
###
> I_s shru 31
I_s shru 31 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 31:i8)):i*))
*** Warning: (4,8) Node: I_s shru 31, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [31]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 4294967295
 6) -4294967296
###
> I_s shru 62
I_s shru 62 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 62:i8)):i*))
*** Warning: (4,8) Node: I_s shru 62, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [62]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 1
 6) -2
###
> I_s shru 63
I_s shru 63 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 63:i8)):i*))
*** Warning: (4,8) Node: I_s shru 63, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [63]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I_s shru 64
I_s shru 64 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 64:i8)):i*))
*** Warning: (4,8) Node: I_s shru 64, Message: Shift right unsigned operator ('shru') on type 'i' interpreted as signed ('shri')
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [64]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I8s shru 0
I8s shru 0 : i8*
BndKind:Global, Type:i8*, Bnd:(Global(I8s))
// (∂.I8s:i8*) : i8*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ret
  Total Size: 11

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 9223372036854775807
 6) -9223372036854775808
###
> I8s shru 1
I8s shru 1 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shru(Scope(1), 1:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      1) ldc.i4.1
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 9223372036854775807
 3) 1
 4) 9223372036854775807
 5) 4611686018427387903
 6) 4611686018427387904
###
> I8s shru 7
I8s shru 7 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shru(Scope(1), 7:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      1) ldc.i4.7
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 144115188075855871
 3) 0
 4) 144115188075855871
 5) 72057594037927935
 6) 72057594037927936
###
> I8s shru 15
I8s shru 15 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shru(Scope(1), 15:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [15]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 562949953421311
 3) 0
 4) 562949953421311
 5) 281474976710655
 6) 281474976710656
###
> I8s shru 31
I8s shru 31 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shru(Scope(1), 31:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [31]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 8589934591
 3) 0
 4) 8589934591
 5) 4294967295
 6) 4294967296
###
> I8s shru 62
I8s shru 62 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shru(Scope(1), 62:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [62]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 3
 3) 0
 4) 3
 5) 1
 6) 2
###
> I8s shru 63
I8s shru 63 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shru(Scope(1), 63:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [63]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 0
 6) 1
###
> I8s shru 64
I8s shru 64 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), 0:i8):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldc.i4.0
      1) conv.i8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> I4s shru 0
I4s shru 0 : i4*
BndKind:Global, Type:i4*, Bnd:(Global(I4s))
// (∂.I4s:i4*) : i4*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ret
  Total Size: 11

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 2147483647
 6) -2147483648
###
> I4s shru 1
I4s shru 1 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shru(Scope(1), 1:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      1) ldc.i4.1
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) 2147483647
 3) 1
 4) 2147483647
 5) 1073741823
 6) 1073741824
###
> I4s shru 7
I4s shru 7 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shru(Scope(1), 7:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      1) ldc.i4.7
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) 33554431
 3) 0
 4) 33554431
 5) 16777215
 6) 16777216
###
> I4s shru 15
I4s shru 15 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shru(Scope(1), 15:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      2) ldc.i4.s [15]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) 131071
 3) 0
 4) 131071
 5) 65535
 6) 65536
###
> I4s shru 31
I4s shru 31 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shru(Scope(1), 31:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      2) ldc.i4.s [31]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 0
 6) 1
###
> I4s shru 32
I4s shru 32 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), 0:i4):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> I2s shru 0
I2s shru 0 : i2*
BndKind:Global, Type:i2*, Bnd:(Global(I2s))
// (∂.I2s:i2*) : i2*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ret
  Total Size: 11

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 32767
 6) -32768
###
> I2s shru 1
I2s shru 1 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), Shru(Scope(1), 1:i8)):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldarg.1 [i2]
      1) conv.u2
      1) ldc.i4.1
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) 32767
 3) 1
 4) 32767
 5) 16383
 6) 16384
###
> I2s shru 7
I2s shru 7 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), Shru(Scope(1), 7:i8)):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldarg.1 [i2]
      1) conv.u2
      1) ldc.i4.7
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) 511
 3) 0
 4) 511
 5) 255
 6) 256
###
> I2s shru 15
I2s shru 15 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), Shru(Scope(1), 15:i8)):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldarg.1 [i2]
      1) conv.u2
      2) ldc.i4.s [15]
      1) shr.un
      1) ret
  Total Size: 6

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 0
 6) 1
###
> I2s shru 16
I2s shru 16 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), 0:i2):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> I1s shru 0
I1s shru 0 : i1*
BndKind:Global, Type:i1*, Bnd:(Global(I1s))
// (∂.I1s:i1*) : i1*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ret
  Total Size: 11

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 127
 6) -128
###
> I1s shru 1
I1s shru 1 : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(I1s), Shru(Scope(1), 1:i8)):i1*))
// (∂.I1s:i1*) : i1*
ForEach_1(Arr<obj>, i1):i1
      1) ldarg.1 [i1]
      1) conv.u1
      1) ldc.i4.1
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i1,i1>]
      5) call static ForEachGen::Exec(Seq<i1>, Func<i1,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 0
 2) 127
 3) 1
 4) 127
 5) 63
 6) 64
###
> I1s shru 7
I1s shru 7 : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(I1s), Shru(Scope(1), 7:i8)):i1*))
// (∂.I1s:i1*) : i1*
ForEach_1(Arr<obj>, i1):i1
      1) ldarg.1 [i1]
      1) conv.u1
      1) ldc.i4.7
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i1,i1>]
      5) call static ForEachGen::Exec(Seq<i1>, Func<i1,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 0
 6) 1
###
> I1s shru 8
I1s shru 8 : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(I1s), 0:i1):i1*))
// (∂.I1s:i1*) : i1*
ForEach_1(Arr<obj>, i1):i1
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i1,i1>]
      5) call static ForEachGen::Exec(Seq<i1>, Func<i1,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> I_s shri 0
I_s shri 0 : i*
BndKind:Global, Type:i*, Bnd:(Global(I_s))
// (∂.I_s:i*) : i*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ret
  Total Size: 11

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 9223372036854775807
 6) -9223372036854775808
###
> I_s shri 1
I_s shri 1 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 1:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      1) ldc.i4.1
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 8

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 1
 4) -1
 5) 4611686018427387903
 6) -4611686018427387904
###
> I_s shri 7
I_s shri 7 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 7:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      1) ldc.i4.7
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 8

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 72057594037927935
 6) -72057594037927936
###
> I_s shri 15
I_s shri 15 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 15:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [15]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 281474976710655
 6) -281474976710656
###
> I_s shri 31
I_s shri 31 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 31:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [31]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 4294967295
 6) -4294967296
###
> I_s shri 62
I_s shri 62 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 62:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [62]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 1
 6) -2
###
> I_s shri 63
I_s shri 63 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 63:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [63]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I_s shri 64
I_s shri 64 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(I_s), Shri(Scope(1), 64:i8)):i*))
// (∂.I_s:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      2) ldc.i4.s [64]
      5) call static ia::op_RightShift(ia, i4):ia
      1) ret
  Total Size: 9

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,ia>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 28

Func sig: (I_s:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I8s shri 0
I8s shri 0 : i8*
BndKind:Global, Type:i8*, Bnd:(Global(I8s))
// (∂.I8s:i8*) : i8*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ret
  Total Size: 11

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 9223372036854775807
 6) -9223372036854775808
###
> I8s shri 1
I8s shri 1 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shri(Scope(1), 1:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      1) ldc.i4.1
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) -1
 3) 1
 4) -1
 5) 4611686018427387903
 6) -4611686018427387904
###
> I8s shri 7
I8s shri 7 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shri(Scope(1), 7:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 72057594037927935
 6) -72057594037927936
###
> I8s shri 15
I8s shri 15 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shri(Scope(1), 15:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [15]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 281474976710655
 6) -281474976710656
###
> I8s shri 31
I8s shri 31 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shri(Scope(1), 31:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [31]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 4294967295
 6) -4294967296
###
> I8s shri 62
I8s shri 62 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shri(Scope(1), 62:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [62]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 1
 6) -2
###
> I8s shri 63
I8s shri 63 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shri(Scope(1), 63:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [63]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I8s shri 64
I8s shri 64 : i8*
BndKind:Call, Type:i8*, Bnd:(Call(∂.ForEach([map:1] Global(I8s), Shri(Scope(1), 63:i8)):i8*))
// (∂.I8s:i8*) : i8*
ForEach_1(Arr<obj>, i8):i8
      1) ldarg.1 [i8]
      2) ldc.i4.s [63]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i8>
      1) stloc.0 [Seq<i8>]
      1) ldloc.0 [Seq<i8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i8,i8>]
      5) call static ForEachGen::Exec(Seq<i8>, Func<i8,i8>):Seq<i8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i8>):Seq<i8>
      1) ret
  Total Size: 28

Func sig: (I8s:i8*) to i8*
Sequence: Seq<i8>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I4s shri 0
I4s shri 0 : i4*
BndKind:Global, Type:i4*, Bnd:(Global(I4s))
// (∂.I4s:i4*) : i4*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ret
  Total Size: 11

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 2147483647
 6) -2147483648
###
> I4s shri 1
I4s shri 1 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shri(Scope(1), 1:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      1) ldc.i4.1
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) -1
 3) 1
 4) -1
 5) 1073741823
 6) -1073741824
###
> I4s shri 7
I4s shri 7 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shri(Scope(1), 7:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 16777215
 6) -16777216
###
> I4s shri 15
I4s shri 15 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shri(Scope(1), 15:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      2) ldc.i4.s [15]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 65535
 6) -65536
###
> I4s shri 31
I4s shri 31 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shri(Scope(1), 31:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      2) ldc.i4.s [31]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I4s shri 32
I4s shri 32 : i4*
BndKind:Call, Type:i4*, Bnd:(Call(∂.ForEach([map:1] Global(I4s), Shri(Scope(1), 31:i8)):i4*))
// (∂.I4s:i4*) : i4*
ForEach_1(Arr<obj>, i4):i4
      1) ldarg.1 [i4]
      2) ldc.i4.s [31]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i4>
      1) stloc.0 [Seq<i4>]
      1) ldloc.0 [Seq<i4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i4,i4>]
      5) call static ForEachGen::Exec(Seq<i4>, Func<i4,i4>):Seq<i4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i4>):Seq<i4>
      1) ret
  Total Size: 28

Func sig: (I4s:i4*) to i4*
Sequence: Seq<i4>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I2s shri 0
I2s shri 0 : i2*
BndKind:Global, Type:i2*, Bnd:(Global(I2s))
// (∂.I2s:i2*) : i2*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ret
  Total Size: 11

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 32767
 6) -32768
###
> I2s shri 1
I2s shri 1 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), Shri(Scope(1), 1:i8)):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldarg.1 [i2]
      1) ldc.i4.1
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) -1
 3) 1
 4) -1
 5) 16383
 6) -16384
###
> I2s shri 7
I2s shri 7 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), Shri(Scope(1), 7:i8)):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldarg.1 [i2]
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 255
 6) -256
###
> I2s shri 15
I2s shri 15 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), Shri(Scope(1), 15:i8)):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldarg.1 [i2]
      2) ldc.i4.s [15]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I2s shri 16
I2s shri 16 : i2*
BndKind:Call, Type:i2*, Bnd:(Call(∂.ForEach([map:1] Global(I2s), Shri(Scope(1), 15:i8)):i2*))
// (∂.I2s:i2*) : i2*
ForEach_1(Arr<obj>, i2):i2
      1) ldarg.1 [i2]
      2) ldc.i4.s [15]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i2>
      1) stloc.0 [Seq<i2>]
      1) ldloc.0 [Seq<i2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i2,i2>]
      5) call static ForEachGen::Exec(Seq<i2>, Func<i2,i2>):Seq<i2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i2>):Seq<i2>
      1) ret
  Total Size: 28

Func sig: (I2s:i2*) to i2*
Sequence: Seq<i2>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I1s shri 0
I1s shri 0 : i1*
BndKind:Global, Type:i1*, Bnd:(Global(I1s))
// (∂.I1s:i1*) : i1*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ret
  Total Size: 11

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 1
 2) -1
 3) 2
 4) -2
 5) 127
 6) -128
###
> I1s shri 1
I1s shri 1 : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(I1s), Shri(Scope(1), 1:i8)):i1*))
// (∂.I1s:i1*) : i1*
ForEach_1(Arr<obj>, i1):i1
      1) ldarg.1 [i1]
      1) ldc.i4.1
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i1,i1>]
      5) call static ForEachGen::Exec(Seq<i1>, Func<i1,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 0
 2) -1
 3) 1
 4) -1
 5) 63
 6) -64
###
> I1s shri 7
I1s shri 7 : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(I1s), Shri(Scope(1), 7:i8)):i1*))
// (∂.I1s:i1*) : i1*
ForEach_1(Arr<obj>, i1):i1
      1) ldarg.1 [i1]
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i1,i1>]
      5) call static ForEachGen::Exec(Seq<i1>, Func<i1,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> I1s shri 8
I1s shri 8 : i1*
BndKind:Call, Type:i1*, Bnd:(Call(∂.ForEach([map:1] Global(I1s), Shri(Scope(1), 7:i8)):i1*))
// (∂.I1s:i1*) : i1*
ForEach_1(Arr<obj>, i1):i1
      1) ldarg.1 [i1]
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<i1>
      1) stloc.0 [Seq<i1>]
      1) ldloc.0 [Seq<i1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<i1,i1>]
      5) call static ForEachGen::Exec(Seq<i1>, Func<i1,i1>):Seq<i1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<i1>):Seq<i1>
      1) ret
  Total Size: 28

Func sig: (I1s:i1*) to i1*
Sequence: Seq<i1>
 0) 0
 1) 0
 2) -1
 3) 0
 4) -1
 5) 0
 6) -1
###
> U8s shl 0
U8s shl 0 : u8*
BndKind:Global, Type:u8*, Bnd:(Global(U8s))
// (∂.U8s:u8*) : u8*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ret
  Total Size: 11

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 1
 2) 18446744073709551615
 3) 2
 4) 18446744073709551614
 5) 9223372036854775807
 6) 9223372036854775808
###
> U8s shl 1
U8s shl 1 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shl(Scope(1), 1:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      1) ldc.i4.1
      1) shl
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 2
 2) 18446744073709551614
 3) 4
 4) 18446744073709551612
 5) 18446744073709551614
 6) 0
###
> U8s shl 7
U8s shl 7 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shl(Scope(1), 7:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      1) ldc.i4.7
      1) shl
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 128
 2) 18446744073709551488
 3) 256
 4) 18446744073709551360
 5) 18446744073709551488
 6) 0
###
> U8s shl 15
U8s shl 15 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shl(Scope(1), 15:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [15]
      1) shl
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 32768
 2) 18446744073709518848
 3) 65536
 4) 18446744073709486080
 5) 18446744073709518848
 6) 0
###
> U8s shl 31
U8s shl 31 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shl(Scope(1), 31:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [31]
      1) shl
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 2147483648
 2) 18446744071562067968
 3) 4294967296
 4) 18446744069414584320
 5) 18446744071562067968
 6) 0
###
> U8s shl 62
U8s shl 62 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shl(Scope(1), 62:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [62]
      1) shl
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 4611686018427387904
 2) 13835058055282163712
 3) 9223372036854775808
 4) 9223372036854775808
 5) 13835058055282163712
 6) 0
###
> U8s shl 63
U8s shl 63 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shl(Scope(1), 63:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [63]
      1) shl
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 9223372036854775808
 2) 9223372036854775808
 3) 0
 4) 0
 5) 9223372036854775808
 6) 0
###
> U8s shl 64
U8s shl 64 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), 0:u8):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldc.i4.0
      1) conv.u8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> U4s shl 0
U4s shl 0 : u4*
BndKind:Global, Type:u4*, Bnd:(Global(U4s))
// (∂.U4s:u4*) : u4*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ret
  Total Size: 11

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 1
 2) 4294967295
 3) 2
 4) 4294967294
 5) 2147483647
 6) 2147483648
###
> U4s shl 1
U4s shl 1 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shl(Scope(1), 1:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      1) ldc.i4.1
      1) shl
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 2
 2) 4294967294
 3) 4
 4) 4294967292
 5) 4294967294
 6) 0
###
> U4s shl 7
U4s shl 7 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shl(Scope(1), 7:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      1) ldc.i4.7
      1) shl
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 128
 2) 4294967168
 3) 256
 4) 4294967040
 5) 4294967168
 6) 0
###
> U4s shl 15
U4s shl 15 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shl(Scope(1), 15:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      2) ldc.i4.s [15]
      1) shl
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 32768
 2) 4294934528
 3) 65536
 4) 4294901760
 5) 4294934528
 6) 0
###
> U4s shl 31
U4s shl 31 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shl(Scope(1), 31:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      2) ldc.i4.s [31]
      1) shl
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 2147483648
 2) 2147483648
 3) 0
 4) 0
 5) 2147483648
 6) 0
###
> U4s shl 32
U4s shl 32 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), 0:u4):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> U2s shl 0
U2s shl 0 : u2*
BndKind:Global, Type:u2*, Bnd:(Global(U2s))
// (∂.U2s:u2*) : u2*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ret
  Total Size: 11

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 1
 2) 65535
 3) 2
 4) 65534
 5) 32767
 6) 32768
###
> U2s shl 1
U2s shl 1 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), Shl(Scope(1), 1:i8)):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldarg.1 [u2]
      1) ldc.i4.1
      1) shl
      1) conv.u2
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 2
 2) 65534
 3) 4
 4) 65532
 5) 65534
 6) 0
###
> U2s shl 7
U2s shl 7 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), Shl(Scope(1), 7:i8)):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldarg.1 [u2]
      1) ldc.i4.7
      1) shl
      1) conv.u2
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 128
 2) 65408
 3) 256
 4) 65280
 5) 65408
 6) 0
###
> U2s shl 15
U2s shl 15 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), Shl(Scope(1), 15:i8)):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldarg.1 [u2]
      2) ldc.i4.s [15]
      1) shl
      1) conv.u2
      1) ret
  Total Size: 6

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 32768
 2) 32768
 3) 0
 4) 0
 5) 32768
 6) 0
###
> U2s shl 16
U2s shl 16 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), 0:u2):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> U1s shl 0
U1s shl 0 : u1*
BndKind:Global, Type:u1*, Bnd:(Global(U1s))
// (∂.U1s:u1*) : u1*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ret
  Total Size: 11

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 1
 2) 255
 3) 2
 4) 254
 5) 127
 6) 128
###
> U1s shl 1
U1s shl 1 : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(U1s), Shl(Scope(1), 1:i8)):u1*))
// (∂.U1s:u1*) : u1*
ForEach_1(Arr<obj>, u1):u1
      1) ldarg.1 [u1]
      1) ldc.i4.1
      1) shl
      1) conv.u1
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u1,u1>]
      5) call static ForEachGen::Exec(Seq<u1>, Func<u1,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 2
 2) 254
 3) 4
 4) 252
 5) 254
 6) 0
###
> U1s shl 7
U1s shl 7 : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(U1s), Shl(Scope(1), 7:i8)):u1*))
// (∂.U1s:u1*) : u1*
ForEach_1(Arr<obj>, u1):u1
      1) ldarg.1 [u1]
      1) ldc.i4.7
      1) shl
      1) conv.u1
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u1,u1>]
      5) call static ForEachGen::Exec(Seq<u1>, Func<u1,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 128
 2) 128
 3) 0
 4) 0
 5) 128
 6) 0
###
> U1s shl 8
U1s shl 8 : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(U1s), 0:u1):u1*))
// (∂.U1s:u1*) : u1*
ForEach_1(Arr<obj>, u1):u1
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u1,u1>]
      5) call static ForEachGen::Exec(Seq<u1>, Func<u1,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> U8s shr 0
U8s shr 0 : u8*
BndKind:Global, Type:u8*, Bnd:(Global(U8s))
// (∂.U8s:u8*) : u8*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ret
  Total Size: 11

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 1
 2) 18446744073709551615
 3) 2
 4) 18446744073709551614
 5) 9223372036854775807
 6) 9223372036854775808
###
> U8s shr 1
U8s shr 1 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shru(Scope(1), 1:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      1) ldc.i4.1
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 9223372036854775807
 3) 1
 4) 9223372036854775807
 5) 4611686018427387903
 6) 4611686018427387904
###
> U8s shr 7
U8s shr 7 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shru(Scope(1), 7:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      1) ldc.i4.7
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 144115188075855871
 3) 0
 4) 144115188075855871
 5) 72057594037927935
 6) 72057594037927936
###
> U8s shr 15
U8s shr 15 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shru(Scope(1), 15:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [15]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 562949953421311
 3) 0
 4) 562949953421311
 5) 281474976710655
 6) 281474976710656
###
> U8s shr 31
U8s shr 31 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shru(Scope(1), 31:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [31]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 8589934591
 3) 0
 4) 8589934591
 5) 4294967295
 6) 4294967296
###
> U8s shr 62
U8s shr 62 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shru(Scope(1), 62:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [62]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 3
 3) 0
 4) 3
 5) 1
 6) 2
###
> U8s shr 63
U8s shr 63 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shru(Scope(1), 63:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [63]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 0
 6) 1
###
> U8s shr 64
U8s shr 64 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), 0:u8):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldc.i4.0
      1) conv.u8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> U4s shr 0
U4s shr 0 : u4*
BndKind:Global, Type:u4*, Bnd:(Global(U4s))
// (∂.U4s:u4*) : u4*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ret
  Total Size: 11

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 1
 2) 4294967295
 3) 2
 4) 4294967294
 5) 2147483647
 6) 2147483648
###
> U4s shr 1
U4s shr 1 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shru(Scope(1), 1:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      1) ldc.i4.1
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 2147483647
 3) 1
 4) 2147483647
 5) 1073741823
 6) 1073741824
###
> U4s shr 7
U4s shr 7 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shru(Scope(1), 7:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      1) ldc.i4.7
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 33554431
 3) 0
 4) 33554431
 5) 16777215
 6) 16777216
###
> U4s shr 15
U4s shr 15 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shru(Scope(1), 15:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      2) ldc.i4.s [15]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 131071
 3) 0
 4) 131071
 5) 65535
 6) 65536
###
> U4s shr 31
U4s shr 31 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shru(Scope(1), 31:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      2) ldc.i4.s [31]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 0
 6) 1
###
> U4s shr 32
U4s shr 32 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), 0:u4):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> U2s shr 0
U2s shr 0 : u2*
BndKind:Global, Type:u2*, Bnd:(Global(U2s))
// (∂.U2s:u2*) : u2*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ret
  Total Size: 11

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 1
 2) 65535
 3) 2
 4) 65534
 5) 32767
 6) 32768
###
> U2s shr 1
U2s shr 1 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), Shru(Scope(1), 1:i8)):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldarg.1 [u2]
      1) ldc.i4.1
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 32767
 3) 1
 4) 32767
 5) 16383
 6) 16384
###
> U2s shr 7
U2s shr 7 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), Shru(Scope(1), 7:i8)):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldarg.1 [u2]
      1) ldc.i4.7
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 511
 3) 0
 4) 511
 5) 255
 6) 256
###
> U2s shr 15
U2s shr 15 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), Shru(Scope(1), 15:i8)):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldarg.1 [u2]
      2) ldc.i4.s [15]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 0
 6) 1
###
> U2s shr 16
U2s shr 16 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), 0:u2):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> U1s shr 0
U1s shr 0 : u1*
BndKind:Global, Type:u1*, Bnd:(Global(U1s))
// (∂.U1s:u1*) : u1*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ret
  Total Size: 11

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 1
 2) 255
 3) 2
 4) 254
 5) 127
 6) 128
###
> U1s shr 1
U1s shr 1 : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(U1s), Shru(Scope(1), 1:i8)):u1*))
// (∂.U1s:u1*) : u1*
ForEach_1(Arr<obj>, u1):u1
      1) ldarg.1 [u1]
      1) ldc.i4.1
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u1,u1>]
      5) call static ForEachGen::Exec(Seq<u1>, Func<u1,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 0
 2) 127
 3) 1
 4) 127
 5) 63
 6) 64
###
> U1s shr 7
U1s shr 7 : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(U1s), Shru(Scope(1), 7:i8)):u1*))
// (∂.U1s:u1*) : u1*
ForEach_1(Arr<obj>, u1):u1
      1) ldarg.1 [u1]
      1) ldc.i4.7
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u1,u1>]
      5) call static ForEachGen::Exec(Seq<u1>, Func<u1,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 0
 6) 1
###
> U1s shr 8
U1s shr 8 : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(U1s), 0:u1):u1*))
// (∂.U1s:u1*) : u1*
ForEach_1(Arr<obj>, u1):u1
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u1,u1>]
      5) call static ForEachGen::Exec(Seq<u1>, Func<u1,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> U8s shru 0
U8s shru 0 : u8*
BndKind:Global, Type:u8*, Bnd:(Global(U8s))
// (∂.U8s:u8*) : u8*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ret
  Total Size: 11

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 1
 2) 18446744073709551615
 3) 2
 4) 18446744073709551614
 5) 9223372036854775807
 6) 9223372036854775808
###
> U8s shru 1
U8s shru 1 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shru(Scope(1), 1:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      1) ldc.i4.1
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 9223372036854775807
 3) 1
 4) 9223372036854775807
 5) 4611686018427387903
 6) 4611686018427387904
###
> U8s shru 7
U8s shru 7 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shru(Scope(1), 7:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      1) ldc.i4.7
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 144115188075855871
 3) 0
 4) 144115188075855871
 5) 72057594037927935
 6) 72057594037927936
###
> U8s shru 15
U8s shru 15 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shru(Scope(1), 15:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [15]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 562949953421311
 3) 0
 4) 562949953421311
 5) 281474976710655
 6) 281474976710656
###
> U8s shru 31
U8s shru 31 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shru(Scope(1), 31:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [31]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 8589934591
 3) 0
 4) 8589934591
 5) 4294967295
 6) 4294967296
###
> U8s shru 62
U8s shru 62 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shru(Scope(1), 62:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [62]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 3
 3) 0
 4) 3
 5) 1
 6) 2
###
> U8s shru 63
U8s shru 63 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shru(Scope(1), 63:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [63]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 0
 6) 1
###
> U8s shru 64
U8s shru 64 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), 0:u8):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldc.i4.0
      1) conv.u8
      1) ret
  Total Size: 3

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> U4s shru 0
U4s shru 0 : u4*
BndKind:Global, Type:u4*, Bnd:(Global(U4s))
// (∂.U4s:u4*) : u4*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ret
  Total Size: 11

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 1
 2) 4294967295
 3) 2
 4) 4294967294
 5) 2147483647
 6) 2147483648
###
> U4s shru 1
U4s shru 1 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shru(Scope(1), 1:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      1) ldc.i4.1
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 2147483647
 3) 1
 4) 2147483647
 5) 1073741823
 6) 1073741824
###
> U4s shru 7
U4s shru 7 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shru(Scope(1), 7:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      1) ldc.i4.7
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 33554431
 3) 0
 4) 33554431
 5) 16777215
 6) 16777216
###
> U4s shru 15
U4s shru 15 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shru(Scope(1), 15:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      2) ldc.i4.s [15]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 131071
 3) 0
 4) 131071
 5) 65535
 6) 65536
###
> U4s shru 31
U4s shru 31 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shru(Scope(1), 31:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      2) ldc.i4.s [31]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 0
 6) 1
###
> U4s shru 32
U4s shru 32 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), 0:u4):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> U2s shru 0
U2s shru 0 : u2*
BndKind:Global, Type:u2*, Bnd:(Global(U2s))
// (∂.U2s:u2*) : u2*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ret
  Total Size: 11

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 1
 2) 65535
 3) 2
 4) 65534
 5) 32767
 6) 32768
###
> U2s shru 1
U2s shru 1 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), Shru(Scope(1), 1:i8)):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldarg.1 [u2]
      1) ldc.i4.1
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 32767
 3) 1
 4) 32767
 5) 16383
 6) 16384
###
> U2s shru 7
U2s shru 7 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), Shru(Scope(1), 7:i8)):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldarg.1 [u2]
      1) ldc.i4.7
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 511
 3) 0
 4) 511
 5) 255
 6) 256
###
> U2s shru 15
U2s shru 15 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), Shru(Scope(1), 15:i8)):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldarg.1 [u2]
      2) ldc.i4.s [15]
      1) shr.un
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 0
 6) 1
###
> U2s shru 16
U2s shru 16 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), 0:u2):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> U1s shru 0
U1s shru 0 : u1*
BndKind:Global, Type:u1*, Bnd:(Global(U1s))
// (∂.U1s:u1*) : u1*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ret
  Total Size: 11

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 1
 2) 255
 3) 2
 4) 254
 5) 127
 6) 128
###
> U1s shru 1
U1s shru 1 : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(U1s), Shru(Scope(1), 1:i8)):u1*))
// (∂.U1s:u1*) : u1*
ForEach_1(Arr<obj>, u1):u1
      1) ldarg.1 [u1]
      1) ldc.i4.1
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u1,u1>]
      5) call static ForEachGen::Exec(Seq<u1>, Func<u1,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 0
 2) 127
 3) 1
 4) 127
 5) 63
 6) 64
###
> U1s shru 7
U1s shru 7 : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(U1s), Shru(Scope(1), 7:i8)):u1*))
// (∂.U1s:u1*) : u1*
ForEach_1(Arr<obj>, u1):u1
      1) ldarg.1 [u1]
      1) ldc.i4.7
      1) shr.un
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u1,u1>]
      5) call static ForEachGen::Exec(Seq<u1>, Func<u1,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 0
 2) 1
 3) 0
 4) 1
 5) 0
 6) 1
###
> U1s shru 8
U1s shru 8 : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(U1s), 0:u1):u1*))
// (∂.U1s:u1*) : u1*
ForEach_1(Arr<obj>, u1):u1
      1) ldc.i4.0
      1) ret
  Total Size: 2

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u1,u1>]
      5) call static ForEachGen::Exec(Seq<u1>, Func<u1,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 0
 2) 0
 3) 0
 4) 0
 5) 0
 6) 0
###
> U8s shri 0
U8s shri 0 : u8*
BndKind:Global, Type:u8*, Bnd:(Global(U8s))
// (∂.U8s:u8*) : u8*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ret
  Total Size: 11

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 1
 2) 18446744073709551615
 3) 2
 4) 18446744073709551614
 5) 9223372036854775807
 6) 9223372036854775808
###
> U8s shri 1
U8s shri 1 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shri(Scope(1), 1:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      1) ldc.i4.1
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 18446744073709551615
 3) 1
 4) 18446744073709551615
 5) 4611686018427387903
 6) 13835058055282163712
###
> U8s shri 7
U8s shri 7 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shri(Scope(1), 7:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 18446744073709551615
 3) 0
 4) 18446744073709551615
 5) 72057594037927935
 6) 18374686479671623680
###
> U8s shri 15
U8s shri 15 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shri(Scope(1), 15:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [15]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 18446744073709551615
 3) 0
 4) 18446744073709551615
 5) 281474976710655
 6) 18446462598732840960
###
> U8s shri 31
U8s shri 31 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shri(Scope(1), 31:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [31]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 18446744073709551615
 3) 0
 4) 18446744073709551615
 5) 4294967295
 6) 18446744069414584320
###
> U8s shri 62
U8s shri 62 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shri(Scope(1), 62:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [62]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 18446744073709551615
 3) 0
 4) 18446744073709551615
 5) 1
 6) 18446744073709551614
###
> U8s shri 63
U8s shri 63 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shri(Scope(1), 63:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [63]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 18446744073709551615
 3) 0
 4) 18446744073709551615
 5) 0
 6) 18446744073709551615
###
> U8s shri 64
U8s shri 64 : u8*
BndKind:Call, Type:u8*, Bnd:(Call(∂.ForEach([map:1] Global(U8s), Shri(Scope(1), 63:i8)):u8*))
// (∂.U8s:u8*) : u8*
ForEach_1(Arr<obj>, u8):u8
      1) ldarg.1 [u8]
      2) ldc.i4.s [63]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u8>
      1) stloc.0 [Seq<u8>]
      1) ldloc.0 [Seq<u8>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u8,u8>]
      5) call static ForEachGen::Exec(Seq<u8>, Func<u8,u8>):Seq<u8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u8>):Seq<u8>
      1) ret
  Total Size: 28

Func sig: (U8s:u8*) to u8*
Sequence: Seq<u8>
 0) 0
 1) 0
 2) 18446744073709551615
 3) 0
 4) 18446744073709551615
 5) 0
 6) 18446744073709551615
###
> U4s shri 0
U4s shri 0 : u4*
BndKind:Global, Type:u4*, Bnd:(Global(U4s))
// (∂.U4s:u4*) : u4*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ret
  Total Size: 11

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 1
 2) 4294967295
 3) 2
 4) 4294967294
 5) 2147483647
 6) 2147483648
###
> U4s shri 1
U4s shri 1 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shri(Scope(1), 1:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      1) ldc.i4.1
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 4294967295
 3) 1
 4) 4294967295
 5) 1073741823
 6) 3221225472
###
> U4s shri 7
U4s shri 7 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shri(Scope(1), 7:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 4

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 4294967295
 3) 0
 4) 4294967295
 5) 16777215
 6) 4278190080
###
> U4s shri 15
U4s shri 15 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shri(Scope(1), 15:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      2) ldc.i4.s [15]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 4294967295
 3) 0
 4) 4294967295
 5) 65535
 6) 4294901760
###
> U4s shri 31
U4s shri 31 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shri(Scope(1), 31:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      2) ldc.i4.s [31]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 4294967295
 3) 0
 4) 4294967295
 5) 0
 6) 4294967295
###
> U4s shri 32
U4s shri 32 : u4*
BndKind:Call, Type:u4*, Bnd:(Call(∂.ForEach([map:1] Global(U4s), Shri(Scope(1), 31:i8)):u4*))
// (∂.U4s:u4*) : u4*
ForEach_1(Arr<obj>, u4):u4
      1) ldarg.1 [u4]
      2) ldc.i4.s [31]
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u4>
      1) stloc.0 [Seq<u4>]
      1) ldloc.0 [Seq<u4>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u4,u4>]
      5) call static ForEachGen::Exec(Seq<u4>, Func<u4,u4>):Seq<u4>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u4>):Seq<u4>
      1) ret
  Total Size: 28

Func sig: (U4s:u4*) to u4*
Sequence: Seq<u4>
 0) 0
 1) 0
 2) 4294967295
 3) 0
 4) 4294967295
 5) 0
 6) 4294967295
###
> U2s shri 0
U2s shri 0 : u2*
BndKind:Global, Type:u2*, Bnd:(Global(U2s))
// (∂.U2s:u2*) : u2*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ret
  Total Size: 11

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 1
 2) 65535
 3) 2
 4) 65534
 5) 32767
 6) 32768
###
> U2s shri 1
U2s shri 1 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), Shri(Scope(1), 1:i8)):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldarg.1 [u2]
      1) conv.i2
      1) ldc.i4.1
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 65535
 3) 1
 4) 65535
 5) 16383
 6) 49152
###
> U2s shri 7
U2s shri 7 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), Shri(Scope(1), 7:i8)):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldarg.1 [u2]
      1) conv.i2
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 65535
 3) 0
 4) 65535
 5) 255
 6) 65280
###
> U2s shri 15
U2s shri 15 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), Shri(Scope(1), 15:i8)):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldarg.1 [u2]
      1) conv.i2
      2) ldc.i4.s [15]
      1) shr
      1) ret
  Total Size: 6

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 65535
 3) 0
 4) 65535
 5) 0
 6) 65535
###
> U2s shri 16
U2s shri 16 : u2*
BndKind:Call, Type:u2*, Bnd:(Call(∂.ForEach([map:1] Global(U2s), Shri(Scope(1), 15:i8)):u2*))
// (∂.U2s:u2*) : u2*
ForEach_1(Arr<obj>, u2):u2
      1) ldarg.1 [u2]
      1) conv.i2
      2) ldc.i4.s [15]
      1) shr
      1) ret
  Total Size: 6

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u2>
      1) stloc.0 [Seq<u2>]
      1) ldloc.0 [Seq<u2>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u2,u2>]
      5) call static ForEachGen::Exec(Seq<u2>, Func<u2,u2>):Seq<u2>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u2>):Seq<u2>
      1) ret
  Total Size: 28

Func sig: (U2s:u2*) to u2*
Sequence: Seq<u2>
 0) 0
 1) 0
 2) 65535
 3) 0
 4) 65535
 5) 0
 6) 65535
###
> U1s shri 0
U1s shri 0 : u1*
BndKind:Global, Type:u1*, Bnd:(Global(U1s))
// (∂.U1s:u1*) : u1*
top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ret
  Total Size: 11

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 1
 2) 255
 3) 2
 4) 254
 5) 127
 6) 128
###
> U1s shri 1
U1s shri 1 : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(U1s), Shri(Scope(1), 1:i8)):u1*))
// (∂.U1s:u1*) : u1*
ForEach_1(Arr<obj>, u1):u1
      1) ldarg.1 [u1]
      1) conv.i1
      1) ldc.i4.1
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u1,u1>]
      5) call static ForEachGen::Exec(Seq<u1>, Func<u1,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 0
 2) 255
 3) 1
 4) 255
 5) 63
 6) 192
###
> U1s shri 7
U1s shri 7 : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(U1s), Shri(Scope(1), 7:i8)):u1*))
// (∂.U1s:u1*) : u1*
ForEach_1(Arr<obj>, u1):u1
      1) ldarg.1 [u1]
      1) conv.i1
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u1,u1>]
      5) call static ForEachGen::Exec(Seq<u1>, Func<u1,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 0
 2) 255
 3) 0
 4) 255
 5) 0
 6) 255
###
> U1s shri 8
U1s shri 8 : u1*
BndKind:Call, Type:u1*, Bnd:(Call(∂.ForEach([map:1] Global(U1s), Shri(Scope(1), 7:i8)):u1*))
// (∂.U1s:u1*) : u1*
ForEach_1(Arr<obj>, u1):u1
      1) ldarg.1 [u1]
      1) conv.i1
      1) ldc.i4.7
      1) shr
      1) ret
  Total Size: 5

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<u1>
      1) stloc.0 [Seq<u1>]
      1) ldloc.0 [Seq<u1>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<u1,u1>]
      5) call static ForEachGen::Exec(Seq<u1>, Func<u1,u1>):Seq<u1>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<u1>):Seq<u1>
      1) ret
  Total Size: 28

Func sig: (U1s:u1*) to u1*
Sequence: Seq<u1>
 0) 0
 1) 0
 2) 255
 3) 0
 4) 255
 5) 0
 6) 255
###

**** New definitions: M, type: i8
**** New definitions: BigShifts, type: i8*
**** New definitions: XS, type: i*

> XS | CastR8(_)
XS | CastR8(_) : r8*
BndKind:Call, Type:r8*, Bnd:(Call(∂.ForEach([map:1] Global(XS), Num<r8>(Scope(1))):r8*))
// (∂.XS:i*) : r8*
ForEach_1(Arr<obj>, ia):r8
      1) ldarg.1 [ia]
      5) call static NumUtil::ToR8(ia):r8
      1) ret
  Total Size: 7

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [Func<ia,r8>]
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,r8>):Seq<r8>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<r8>):Seq<r8>
      1) ret
  Total Size: 28

Func sig: (XS:i*) to r8*
Sequence: Seq<r8>
 0) ∞
 1) ∞
 2) ∞
 3) ∞
 4) ∞
###
> XS shr M - 1
XS shr M - 1 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.With([with:1] Add(Global(M), [-] 1:i8), Call(∂.ForEach([map:2] Global(XS), Shri(Scope(2), Scope(1))):i*)):i*))
// (∂.M:i8, ∂.XS:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [(i8)]
      5) ldfld (i8)::_F0:i8
      1) dup
      1) stloc.0 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.0 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 34

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.0 [i8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.1 [Seq<ia>]
      1) ldloc.0 [i8]
      1) ldc.i4.1
      1) conv.i8
      1) sub
      1) stloc.2 [i8]
      1) ldloc.1 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<ia,ia>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.4
      5) newarr [obj]
      1) dup
      1) ldc.i4.3
      5) newobj (i8)()
      1) dup
      1) ldloc.2 [i8]
      5) stfld (i8)::_F0:i8
      5) stelem [(i8)]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 82

Func sig: (M:i8, XS:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) 1
 3) 2
 4) 2
###
> XS shr M
XS shr M : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.ForEach([map:1] Global(XS), Shri(Scope(1), Global(M))):i*))
// (∂.XS:i*, ∂.M:i8) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.2
      5) ldelem [(i8)]
      5) ldfld (i8)::_F0:i8
      1) dup
      1) stloc.0 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.0 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 34

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.0 [Seq<ia>]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.1 [i8]
      5) newobj (i8)()
      1) stloc.2 [(i8)]
      1) ldloc.2 [(i8)]
      1) ldloc.1 [i8]
      5) stfld (i8)::_F0:i8
      1) ldloc.0 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<ia,ia>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.3
      5) newarr [obj]
      1) dup
      1) ldc.i4.2
      1) ldloc.2 [(i8)]
      5) stelem [(i8)]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 79

Func sig: (XS:i*, M:i8) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) 0
 3) 1
 4) 1
###
> XS shr M + 1
XS shr M + 1 : i*
BndKind:Call, Type:i*, Bnd:(Call(∂.With([with:1] Add(Global(M), 1:i8), Call(∂.ForEach([map:2] Global(XS), Shri(Scope(2), Scope(1))):i*)):i*))
// (∂.M:i8, ∂.XS:i*) : i*
ForEach_1(Arr<obj>, ia):ia
      1) ldarg.1 [ia]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.3
      5) ldelem [(i8)]
      5) ldfld (i8)::_F0:i8
      1) dup
      1) stloc.0 [i8]
      1) ldc.i4.0
      1) conv.i8
      5) ble [0]
      1) ldloc.0 [i8]
      5) call static BindUtil::ClipShift(i8):i4
      5) call static ia::op_RightShift(ia, i4):ia
  Label [0]:
      1) ret
  Total Size: 34

top(Arr<obj>, Arr<obj>):obj
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.0
      1) ldelem.ref
      5) call static CodeGenUtil::ToVal(obj):i8
      1) stloc.0 [i8]
      1) ldarg.1 [Arr<obj>]
      1) ldc.i4.1
      1) ldelem.ref
      5) call static CodeGenUtil::ToRef(obj):Seq<ia>
      1) stloc.1 [Seq<ia>]
      1) ldloc.0 [i8]
      1) ldc.i4.1
      1) conv.i8
      1) add
      1) stloc.2 [i8]
      1) ldloc.1 [Seq<ia>]
      1) ldarg.0 [Arr<obj>]
      1) ldc.i4.0
      5) ldelem [MethodInfo]
      5) ldtoken [Func<ia,ia>]
      5) call static Type::GetTypeFromHandle(RuntimeTypeHandle):Type
      1) ldc.i4.4
      5) newarr [obj]
      1) dup
      1) ldc.i4.3
      5) newobj (i8)()
      1) dup
      1) ldloc.2 [i8]
      5) stfld (i8)::_F0:i8
      5) stelem [(i8)]
      5) callvirt DynamicMethod::CreateDelegate(Type, obj):Delegate
      5) call static ForEachGen::Exec(Seq<ia>, Func<ia,ia>):Seq<ia>
      5) call static CodeGenUtil::EnumerableToCaching(Seq<ia>):Seq<ia>
      1) ret
  Total Size: 82

Func sig: (M:i8, XS:i*) to i*
Sequence: Seq<ia>
 0) 0
 1) 0
 2) 0
 3) 1
 4) 1
###
