# x86-64 machine code, <del>17</del> 15 bytes B0 E6 04 5B AA 2C 4B 3C 01 14 F1 75 F5 AA C3 [Try it online!](https://tio.run/##TVFNU8IwED0nv2Ktw5AIZQCVA4gXj44XT47AIU3SNk6aME2LrQx/3brgIF52533s251ZGWdSdp0IBTB4jRgdZdYnwkJK0zkp/A6EHUI8ndFyToRSJ9h/7w8mlITKhwRbnfyyz31KZLE9AZSFkmc@xglKPtwXlH9jpa4oj4Av6M4bBSmTuShvICBBr42TtlYaHkKljB/lj5QaV0EhjGOc7nEPmqHUobbV6n4y3SwoSdkvxgCyLdGesqgXoiFc6Iuwdi9C5sZpkF7peXRUjxsaWMJ4CC1C5WF/tkNvPH3DqHbJWO2CyZxWcDqYp3zVDAYbvjjAZ26sBtbCFYY0T7f/LwHWM5C0lQ587TCpQfHQdd8ytSILXVzM7rDgH5bo1/YH "C (gcc) – Try It Online") Following the standard calling convention for Unix-like systems (from the System V AMD64 ABI), this takes in RDI a memory address at which to place the result, as a null-terminated byte string. In assembly: ```` f: mov al, -26 # Set AL to -26. r: add al, 'Z'+1 # Add this value to AL to produce a letter. stosb # Write AL to the output string, advancing the pointer. sub al, 'K' # Subtract 'K' from AL. cmp al, 1 # Set flags from calculating AL - 1. CF is 1 iff AL is 0. adc al, 'K'-'Z' # Add (this value + CF) to AL. The net change is +1 or +2. jnz r # If the result is nonzero, repeat the loop. stosb # Write AL (0) to the output string, advancing the pointer. ret # Return. ````