#include <stdint.h>
#include <stdio.h>

unsigned char* to_char_array(uint64_t in, unsigned char* buf)
{
    for(int i = 0; i < 8; ++i)
        buf[i] = (in >> 8*i) & 0xFFu;
    return buf;
}

void output(unsigned char* key)
{
    printf("Current key: %02X %02X %02X %02X %02X %02X %02X %02X \n",
            key[7],key[6],key[5],key[4],key[3],key[2],key[1],key[0]);
}

int main()
{
    const uint64_t start = 0xFFFFFFFFFFFFFF0Fu;
    const uint64_t end   = 0xFFFFFFFFFFFFFFFFu;
    unsigned char buf[8];
    //Handles overflow gracefully
    for(uint64_t x = start; x != end + 1; ++x)
        output(to_char_array(x, buf));
}