code: func DecompressPubkey(pubkey []byte) (x, y *big.Int) {
  	if len(pubkey) != 33 {
  		return nil, nil
  	}
  	var (
  		pubkeydata = (*C.uchar)(unsafe.Pointer(&pubkey[0]))
  		pubkeylen  = C.size_t(len(pubkey))
  		out        = make([]byte, 65)
  		outdata    = (*C.uchar)(unsafe.Pointer(&out[0]))
  		outlen     = C.size_t(len(out))
  	)
  	if C.secp256k1_ext_reencode_pubkey(context, outdata, outlen, pubkeydata, pubkeylen) == 0 {
  		return nil, nil
  	}
  	return new(big.Int).SetBytes(out[1:33]), new(big.Int).SetBytes(out[33:])
  }
docs: // DecompressPubkey parses a public key in the 33-byte compressed format.
  // It returns non-nil coordinates if the public key is valid.