struct DI {
unsigned long abi;
const char *s; unsigned long sn;
char *o; unsigned long ol; unsigned long os;
char *e; unsigned long el; unsigned long es;
const char *IB; unsigned long IBl;
char *OB; unsigned long OBl;
unsigned long tsc;
} __attribute__((packed));
static void putll(char *&gp, long long v) {
char t[24]; int q = 0; char *o = gp;
if (v < 0) { *o++ = '-'; v = -v; }
if (!v) t[q++] = '0';
while (v) { t[q++] = (char)('0' + v % 10); v /= 10; }
while (q) *o++ = t[--q];
*o++ = '\n';
gp = o;
}
int main() { return 0; } /* referenced by musl crt1.o; never runs */
extern "C" void __libc_start_main(void *m, int argc, char **argv) {
(void)m;
unsigned long *p = (unsigned long *)(argv + argc + 1);
while (*p) p++;
p++;
DI *d = 0;
for (; p[0]; p += 2) if (p[0] == 0x6b637564UL) { d = (DI *)p[1]; break; }
if (d) {
/* PRE-TOUCH the output page BEFORE the cold stdin read, so the two cold
page-walks overlap in the OoO engine instead of running back to back.
Byte-exact: putll() always writes offset 0 (at least one digit + '\n'). */
volatile char *op = d->o;
op[0] = 0;
const char *q = (const char *)d->s;
const char *qe = q + (long)d->sn;
long long a = 0, b = 0;
while (q < qe && (*q < '0' || *q > '9')) q++;
while (q < qe && *q >= '0' && *q <= '9') a = a * 10 + (*q++ - '0');
while (q < qe && (*q < '0' || *q > '9')) q++;
while (q < qe && *q >= '0' && *q <= '9') b = b * 10 + (*q++ - '0');
long long r = a * b - a - b;
char *gp = (char *)d->o;
putll(gp, r);
d->os = (unsigned long)(gp - (char *)d->o);
}
__asm__ volatile("syscall" ::"a"(60), "D"(0) : "rcx", "r11", "memory");
for (;;);
}