#include <unistd.h>
#include <sys/syscall.h>
void __stack_chk_fail(void) {}
void _start(void) {
char buf[2];
int rc;
void* addr = (void*)&_start;
asm volatile (
"syscall"
: "=a"(rc)
: "a"(SYS_write), "D"(STDOUT_FILENO), "S"(&addr), "d"(sizeof(addr))
: "rcx", "r11", "memory"
);
asm volatile (
"syscall"
: "=a"(rc)
: "a"(SYS_read), "D"(STDIN_FILENO), "S"(buf), "d"(sizeof(buf))
: "rcx", "r11", "memory"
);
if (rc > 0) {
rc = 0;
}
asm volatile (
"syscall"
: "=a"(rc)
: "a"(SYS_exit), "D"(rc)
: "rcx", "r11", "memory"
);
}