#include <stddef.h>
#include <stdio.h>
#include <ctype.h>
static void hexdump(const void * memory, size_t bytes);
int main(void) {
unsigned char ascii[256];
int i;
for (i = 0; i < sizeof ascii; ++i)
ascii[i] = i;
hexdump(ascii, sizeof ascii);
return 0;
}
static void hexdump(const void * memory, size_t bytes) {
const unsigned char * p, * q;
int i;
p = memory;
while (bytes) {
q = p;
for (i = 0; i < 16 && bytes; ++i) {
++p;
--bytes;
}
bytes += i;
while (i < 16) {
++i;
}
p = q;
for (i = 0; i < 16 && bytes; ++i) {
++p;
--bytes;
}
while (i < 16) {
++i;
}
}
return;
}
I2luY2x1ZGUgPHN0ZGRlZi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPGN0eXBlLmg+CgpzdGF0aWMgdm9pZCBoZXhkdW1wKGNvbnN0IHZvaWQgKiBtZW1vcnksIHNpemVfdCBieXRlcyk7CgppbnQgbWFpbih2b2lkKSB7CiAgICB1bnNpZ25lZCBjaGFyIGFzY2lpWzI1Nl07CiAgICBpbnQgaTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIGFzY2lpOyArK2kpCiAgICAgIGFzY2lpW2ldID0gaTsKICAgIGhleGR1bXAoYXNjaWksIHNpemVvZiBhc2NpaSk7CiAgICByZXR1cm4gMDsKICB9CgpzdGF0aWMgdm9pZCBoZXhkdW1wKGNvbnN0IHZvaWQgKiBtZW1vcnksIHNpemVfdCBieXRlcykgewogICAgY29uc3QgdW5zaWduZWQgY2hhciAqIHAsICogcTsKICAgIGludCBpOwoKICAgIHAgPSBtZW1vcnk7CiAgICB3aGlsZSAoYnl0ZXMpIHsKICAgICAgICBxID0gcDsKICAgICAgICBwcmludGYoIiVwOiAiLCAodm9pZCAqKSBwKTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTYgJiYgYnl0ZXM7ICsraSkgewogICAgICAgICAgICBwcmludGYoIiUwMlggIiwgKnApOwogICAgICAgICAgICArK3A7CiAgICAgICAgICAgIC0tYnl0ZXM7CiAgICAgICAgICB9CiAgICAgICAgYnl0ZXMgKz0gaTsKICAgICAgICB3aGlsZSAoaSA8IDE2KSB7CiAgICAgICAgICAgIHByaW50ZigiWFggIik7CiAgICAgICAgICAgICsraTsKICAgICAgICAgIH0KICAgICAgICBwcmludGYoInwgIik7CiAgICAgICAgcCA9IHE7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IDE2ICYmIGJ5dGVzOyArK2kpIHsKICAgICAgICAgICAgcHJpbnRmKCIlYyIsIGlzcHJpbnQoKnApICYmICFpc3NwYWNlKCpwKSA/ICpwIDogJyAnKTsKICAgICAgICAgICAgKytwOwogICAgICAgICAgICAtLWJ5dGVzOwogICAgICAgICAgfQogICAgICAgIHdoaWxlIChpIDwgMTYpIHsKICAgICAgICAgICAgcHJpbnRmKCIgIik7CiAgICAgICAgICAgICsraTsKICAgICAgICAgIH0KICAgICAgICBwcmludGYoIiB8XG4iKTsKICAgICAgfQogICAgcmV0dXJuOwogIH0K