1629 {
1630 if (left.IsZero)
1631 {
1632 return right;
1633 }
1634 if (right.IsZero)
1635 {
1636 return left;
1637 }
1638 if (left._bits == null && right._bits == null)
1639 {
1640 return left._sign | right._sign;
1641 }
1642 Span<uint> scratch = stackalloc uint[32];
1643 ReadOnlySpan<uint> readOnlySpan = left.ToUInt32Span(scratch);
1644 scratch = stackalloc uint[32];
1645 ReadOnlySpan<uint> readOnlySpan2 = right.ToUInt32Span(scratch);
1646 uint[]
array =
new uint[Math.Max(readOnlySpan.Length, readOnlySpan2.Length)];
1647 uint num = ((left._sign < 0) ? uint.MaxValue : 0u);
1648 uint num2 = ((right._sign < 0) ? uint.MaxValue : 0u);
1649 for (
int i = 0;
i <
array.Length;
i++)
1650 {
1651 uint num3 = ((
i < readOnlySpan.Length) ? readOnlySpan[i] : num);
1652 uint num4 = ((
i < readOnlySpan2.Length) ? readOnlySpan2[i] : num2);
1654 }
1656 }