@staticmethod<EOL><INDENT>def min_or(a, b, c, d, w):<DEDENT>
m = (<NUM_LIT:1> << (w - <NUM_LIT:1>))<EOL>while m != <NUM_LIT:0>:<EOL><INDENT>if ((~a) & c & m) != <NUM_LIT:0>:<EOL><INDENT>temp = (a | m) & -m<EOL>if temp <= b:<EOL><INDENT>a = temp<EOL>break<EOL><DEDENT><DEDENT>elif (a & (~c) & m) != <NUM_LIT:0>:<EOL><INDENT>temp = (c | m) & -m<EOL>if temp <= d:<EOL><INDENT>c = temp<EOL>break<EOL><DEDENT><DEDENT>m >>= <NUM_LIT:1><EOL><DEDENT>return a | c<EOL>
Lower bound of result of ORing 2-intervals.

:param a: Lower bound of first interval
:param b: Upper bound of first interval
:param c: Lower bound of second interval
:param d: Upper bound of second interval
:param w: bit width
:return: Lower bound of ORing 2-intervals