func verifySignature(r io.Reader) error {
	var s uint32
	if err := binary.Read(r, binary.LittleEndian, &s); err != nil {
		return ...
	}
	if s != 288633362 {
		return ...
	}
	return nil
}
func validateBlockCount(r io.Reader) error {
	var c uint32
	if err := binary.Read(r, binary.LittleEndian, &c); err != nil {
		return ...
	}
	if c != 2 {
		return ...
	}
	return nil
}
func parseBlock(r io.Reader) ([]byte, error) {
	var l uint32
	if err := binary.Read(r, binary.LittleEndian, &l); err != nil {
		return nil, ...
	}
	d := make([]byte, l)
	if err := binary.Read(r, binary.LittleEndian, &d); err != nil {
		return nil, ...
	}
	return d, nil
}
func download(...) {
	req, err := http.NewRequest(...)
	if err != nil {
		return ...
	}
	resp, err := c.Do(req)
	if err != nil {
		return ...
	}
	defer resp.Body.Close()
	if resp.StatusCode != http.StatusOK {
		return ...
	}
	r := bufio.NewReader(resp.Body)
	if err := verifySignature(r); err != nil {
		return ...
	}
	if err := validateBlockCount(r); err != nil {
		return ...
	}
	..., err = parseBlock(r)
	if err != nil {
		return ...
	}
	..., err = parseBlock(r)
	if err != nil {
		return ...
    }
     ...
}