func OMul(a uint64, b uint64) (res uint64, overflowed bool) {
	if b == 0 {
		return 0, false
	}
	c := a * b
	if c/b != a {
		return 0, true
	}
	return c, false
}
OMul multiplies 2 values with overflow detection
package types
func OAdd16(a uint16, b uint16) (res uint16, overflowed bool) {
	res = a + b
	overflowed = res < a
	return
}
func OAdd(a uint64, b uint64) (res uint64, overflowed bool) {
	res = a + b
	overflowed = res < a
	return
}
func OSub(a uint64, b uint64) (res uint64, overflowed bool) {
	res = a - b
	overflowed = res > a
	return
}