+efdIntFB c n x1 x2
+ | delta >=# 0# = go_up x1
+ | otherwise = go_dn x1
+ where
+ delta = x2 -# x1
+ go_up x | 2147483647# -# x <# delta = I# x `c` n
+ | otherwise = I# x `c` go_up (x +# delta)
+ go_dn x | (-2147483648#) -# x ># delta = I# x `c` n
+ | otherwise = I# x `c` go_dn (x +# delta)
+
+efdIntList x1 x2
+ | delta >=# 0# = go_up x1
+ | otherwise = go_dn x1
+ where
+ delta = x2 -# x1
+ go_up x | 2147483647# -# x <# delta = [I# x]
+ | otherwise = I# x : go_up (x +# delta)
+ go_dn x | (-2147483648#) -# x ># delta = [I# x]
+ | otherwise = I# x : go_dn (x +# delta)
+