Commented out some optimizations in Equal as it might cause some re-computation when used with IfThenElse having constant branches.
Example:

val x26 = c2 > lineitem_shipdate
val x28 = if (x26) {
  val x23 = lineitem_shipdate >= c1
  val x24 = if (x23) {
    1L
  } else {
    0L
  }
  x24
} else {
  0L
}
val x30 = x28 == 0L
if (x30) {
  //do smething 1
} else {
  //do smething 2
}

would be like this:

val x26 = c2 > lineitem_shipdate
val x28 = if (x26) {
  val x23 = lineitem_shipdate >= c1
  val x24 = if (x23) {
    1L
  } else {
    0L
  }
  x24
} else {
  0L
}
val x29 = SEntry2_x3_LL(lineitem_suppkey, x28)
val x30 = !x26
val x33 = (x30 || {
  val x23 = lineitem_shipdate >= c1
  val x31 = !x23

  x31
})

if (x33) {
  //do smething 1
} else {
  //do smething 2
}