Borrowing between the halves
Subtraction is addition's mirror image: subtract the low halves, and if that underflows, borrow from the high halves. The carry-bit mechanism doubles as a borrow, so the shape is identical to add_64 — just with the subtract-carrying variants:
subfc r4, r6, r4 # low: r4 = a_lo - b_lo, set borrow
subfe r3, r5, r3 # high: r3 = a_hi - b_hi - borrow
blr
The one trap is the subf family: it subtracts the first operand from the second. So subfc r4, r6, r4 is r4 - r6 (low of a minus low of b), not r6 - r4. Read the operands backwards and the function looks like it computes b - a when it really computes a - b.
subfc ("subtract from carrying") does the low words and records the borrow; subfe ("subtract from extended") does the high words and consumes it. Same low-then-high, carry-between-them dance as addition.
Your task
Write sub_64 to match the target.