define(comment)

comment(printPoint, (1 = point.X, 2 = point.Y, 3 = point.Z))
define(printPoint, `
	adrp	x0, fmt1
	add	x0, x0, :lo12:fmt1
	mov	x1, $1
	mov	x2, $2
	mov	x3, $3
	bl	printf')

fmt1:	.string "Point [X: %d\tY: %d\tZ: %d]\n"


	.balign 4				// word align instructions
	.global main				// make main() global to call from OS
main:	stp	x29, x30, [sp, -16]!		// store frame record, allocate memory
	mov	x29, sp				// update FP = SP

	// Initialize Point's X, Y, and Z
	mov x19, 2				// make up X value
	mov x20, 4				// make up Y value
	mov x21, 6				// make up Z value

	// Print Point
	printPoint(x19, x20, x21)		// Call printPoint, passing in X, Y, Z

	mov	w0, 0
	ldp	x29, x30, [sp], 16
	ret
