about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPatryk Niedźwiedziński <pniedzwiedzinski19@gmail.com>2021-04-17 10:28:11 +0200
committerPatryk Niedźwiedziński <pniedzwiedzinski19@gmail.com>2021-04-17 10:28:11 +0200
commitb1ddaa81f28b8bbc62d6d50526e0935b173099eb (patch)
treee606c194f8eecdedf3f710ed097cadfe97d60122
downloadmd2html-b1ddaa81f28b8bbc62d6d50526e0935b173099eb.tar.gz
md2html-b1ddaa81f28b8bbc62d6d50526e0935b173099eb.zip
Init
-rw-r--r--.gitignore2
-rw-r--r--Makefile14
-rw-r--r--README.md35
-rw-r--r--ape/ape.lds343
-rw-r--r--ape/ape.obin0 -> 20640 bytes
-rw-r--r--ape/cosmopolitan.abin0 -> 54749118 bytes
-rw-r--r--ape/cosmopolitan.h31063
-rw-r--r--ape/crt.obin0 -> 3512 bytes
-rw-r--r--cat.c34
-rw-r--r--stdio/clearerr.c23
-rw-r--r--stdio/dirstream.c321
-rw-r--r--stdio/dtoa.c25
-rw-r--r--stdio/fbufsize.c27
-rw-r--r--stdio/fclose.c59
-rw-r--r--stdio/fclose_s.c33
-rw-r--r--stdio/fdopen.c50
-rw-r--r--stdio/feof.c26
-rw-r--r--stdio/ferror.c29
-rw-r--r--stdio/fflush.c91
-rw-r--r--stdio/fflush.internal.h21
-rw-r--r--stdio/fgetc.c33
-rw-r--r--stdio/fgetpos.c29
-rw-r--r--stdio/fgets.c46
-rw-r--r--stdio/fgetwc.c51
-rw-r--r--stdio/fgetws.c41
-rw-r--r--stdio/fileno.c31
-rw-r--r--stdio/flbf.c27
-rw-r--r--stdio/flockfile.c38
-rw-r--r--stdio/flushers.c21
-rw-r--r--stdio/flushlbf.c33
-rw-r--r--stdio/fmemopen.c64
-rw-r--r--stdio/fopen.c74
-rw-r--r--stdio/fopenflags.c47
-rw-r--r--stdio/fpending.c26
-rw-r--r--stdio/fprintf.c28
-rw-r--r--stdio/fpurge.c26
-rw-r--r--stdio/fputc.c38
-rw-r--r--stdio/fputs.c39
-rw-r--r--stdio/fputwc.c40
-rw-r--r--stdio/fputws.c44
-rw-r--r--stdio/fread.c99
-rw-r--r--stdio/freadable.c28
-rw-r--r--stdio/freading.c27
-rw-r--r--stdio/freopen.c60
-rw-r--r--stdio/fscanf.c44
-rw-r--r--stdio/fseek.c36
-rw-r--r--stdio/fseeko.c83
-rw-r--r--stdio/fsetlocking.c26
-rw-r--r--stdio/fsetpos.c24
-rw-r--r--stdio/ftell.c29
-rw-r--r--stdio/ftello.c54
-rw-r--r--stdio/fwritable.c28
-rw-r--r--stdio/fwrite.c89
-rw-r--r--stdio/fwriting.c27
-rw-r--r--stdio/get_current_dir_name.c38
-rw-r--r--stdio/getc.c27
-rw-r--r--stdio/getchar.c27
-rw-r--r--stdio/getdelim.c79
-rw-r--r--stdio/getline.c37
-rw-r--r--stdio/gets.c24
-rw-r--r--stdio/getwc.c27
-rw-r--r--stdio/getwchar.c27
-rw-r--r--stdio/internal.h19
-rw-r--r--stdio/mkostemp.c23
-rw-r--r--stdio/mkostemps.c26
-rw-r--r--stdio/mkostempsm.c81
-rw-r--r--stdio/mkstemp.c23
-rw-r--r--stdio/mkstemps.c23
-rw-r--r--stdio/mktemp.c39
-rw-r--r--stdio/pclose.c43
-rw-r--r--stdio/popen.c57
-rw-r--r--stdio/printf.c71
-rw-r--r--stdio/putc.c29
-rw-r--r--stdio/putchar.c26
-rw-r--r--stdio/puts.c38
-rw-r--r--stdio/putwc.c28
-rw-r--r--stdio/putwchar.c27
-rw-r--r--stdio/rewind.c31
-rw-r--r--stdio/scanf.c33
-rw-r--r--stdio/setbuf.c27
-rw-r--r--stdio/setbuffer.c33
-rw-r--r--stdio/setlinebuf.c27
-rw-r--r--stdio/setvbuf.c42
-rw-r--r--stdio/spawn.c115
-rw-r--r--stdio/spawn.h50
-rw-r--r--stdio/spawna.c107
-rw-r--r--stdio/spawna.internal.h19
-rw-r--r--stdio/spawnf.c85
-rw-r--r--stdio/spawnp.c37
-rw-r--r--stdio/stdbuf.c22
-rw-r--r--stdio/stderr-init.S38
-rw-r--r--stdio/stderr.c36
-rw-r--r--stdio/stdin-init.S34
-rw-r--r--stdio/stdin.c36
-rw-r--r--stdio/stdio.h129
-rw-r--r--stdio/stdio.mk66
-rw-r--r--stdio/stdio_ext.h25
-rw-r--r--stdio/stdout-init.S36
-rw-r--r--stdio/stdout.c45
-rw-r--r--stdio/system.c76
-rw-r--r--stdio/systemexec.c38
-rw-r--r--stdio/temp.h20
-rw-r--r--stdio/tmpfile.c44
-rw-r--r--stdio/ungetc.c36
-rw-r--r--stdio/ungetwc.c47
-rw-r--r--stdio/unlocked.h36
-rw-r--r--stdio/unlocked/clearerr_unlocked.S29
-rw-r--r--stdio/unlocked/feof_unlocked.S29
-rw-r--r--stdio/unlocked/ferror_unlocked.S29
-rw-r--r--stdio/unlocked/fflush_unlocked.S29
-rw-r--r--stdio/unlocked/fgetc_unlocked.S29
-rw-r--r--stdio/unlocked/fgets_unlocked.S29
-rw-r--r--stdio/unlocked/fgetwc_unlocked.S29
-rw-r--r--stdio/unlocked/fgetws_unlocked.S29
-rw-r--r--stdio/unlocked/fileno_unlocked.S29
-rw-r--r--stdio/unlocked/fputc_unlocked.S29
-rw-r--r--stdio/unlocked/fputs_unlocked.S29
-rw-r--r--stdio/unlocked/fputwc_unlocked.S29
-rw-r--r--stdio/unlocked/fputws_unlocked.S29
-rw-r--r--stdio/unlocked/fread_unlocked.S29
-rw-r--r--stdio/unlocked/fwrite_unlocked.S29
-rw-r--r--stdio/unlocked/getc_unlocked.S29
-rw-r--r--stdio/unlocked/getchar_unlocked.S29
-rw-r--r--stdio/unlocked/getwc_unlocked.S29
-rw-r--r--stdio/unlocked/getwchar_unlocked.S29
-rw-r--r--stdio/unlocked/putc_unlocked.S29
-rw-r--r--stdio/unlocked/putchar_unlocked.S29
-rw-r--r--stdio/unlocked/putwc_unlocked.S29
-rw-r--r--stdio/unlocked/putwchar_unlocked.S30
-rw-r--r--stdio/vfprintf.c41
-rw-r--r--stdio/vfscanf.c28
-rw-r--r--stdio/vprintf.c23
-rw-r--r--stdio/vscanf.c28
133 files changed, 36623 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9f8f1de
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+*.com
+*.com.dbg
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..f0d9e30
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,14 @@
+CC=gcc
+CC_OPTS=-g -Os -static -nostdlib -nostdinc -fno-pie -no-pie -mno-red-zone -fno-omit-frame-pointer -pg -mnop-mcount
+INCLUDE=-fuse-ld=bfd -Wl,-T,ape/ape.lds -include ape/cosmopolitan.h ape/crt.o ape/ape.o ape/cosmopolitan.a
+
+all: cat.com
+
+cat.com.dbg: cat.c
+	$(CC) $(CC_OPTS) cat.c -o cat.com.dbg $(INCLUDE)
+
+cat.com: cat.com.dbg
+	objcopy -S -O binary cat.com.dbg cat.com
+
+clean:
+	rm cat.com cat.com.dbg
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..7a93879
--- /dev/null
+++ b/README.md
@@ -0,0 +1,35 @@
+# cat
+
+This is a simple C program that outputs file content. The magic is that it works
+on Linux, *BSD, macOs, Windows thanks to [cosmopolitan](https://github.com/jart/cosmopolitan).
+
+I created this repo as a project template for simple ape programs. `/ape` folder
+contains https://justine.lol/cosmopolitan/cosmopolitan-amalgamation-0.3.zip and
+`/stdio` is copied from cosmopolitan@7ed524ca31bca83fe6700045d346cad3f97b9567
+
+## Running
+
+```sh
+wget https://niedzwiedzinski.cyou/cat.com
+chmod +x cat.com
+sha256sum cat.com
+# 495b3bb169813b07d4c4c43568c6c395e72a952fdf7fe3e5b46bf130cc415af0
+
+# For zsh or fish
+bash -c "./cat.com"
+
+# For everything else
+./cat.com
+```
+
+## Compiling
+
+Requirements:
+
+- make
+- gcc
+- objcopy (from pkg `binutils`)
+
+```
+make
+```
diff --git a/ape/ape.lds b/ape/ape.lds
new file mode 100644
index 0000000..dfba37a
--- /dev/null
+++ b/ape/ape.lds
@@ -0,0 +1,343 @@
+ENTRY(_start)
+PHDRS {
+  Head PT_LOAD FLAGS(5);
+  Rom PT_LOAD FLAGS(5);
+  Ram PT_LOAD FLAGS(6);
+  stack PT_GNU_STACK FLAGS(6);
+}
+SECTIONS {
+  .head SEGMENT_START("text-segment", 0x400000) : AT(0x2000) {
+    HIDDEN(_base = .);
+    KEEP(*(.head))
+    KEEP(*(.text.head))
+    . = ALIGN(8);
+    HIDDEN(ape_phdrs = .);
+    KEEP(*(.elf.phdrs))
+    HIDDEN(ape_phdrs_end = .);
+    . = ALIGN(8);
+    HIDDEN(ape_note = .);
+    KEEP(*(.note.openbsd.ident))
+    KEEP(*(.note.netbsd.ident))
+    HIDDEN(ape_note_end = .);
+    KEEP(*(.pe.header))
+    HIDDEN(ape_pe_sections = .);
+    KEEP(*(.pe.sections))
+    HIDDEN(ape_pe_sections_end = .);
+    KEEP(*(.macho))
+    . = ALIGN(8);
+    HIDDEN(ape_macho_end = .);
+    KEEP(*(.ape.pad.head))
+    . = ALIGN(((255 & 4) == 4) || ((255 & 2) == 2) ? 0x1000 : 16);
+    HIDDEN(_ehead = .);
+  } :Head
+  .text . : {
+    *(.text.real)
+    KEEP(*(SORT_BY_NAME(.sort.text.real.*)))
+    HIDDEN(_ereal = .);
+    . += 1;
+    *(.start)
+    KEEP(*(.initprologue))
+    KEEP(*(SORT_BY_NAME(.init.*)))
+    KEEP(*(.init))
+    KEEP(*(.initepilogue))
+    KEEP(*(.pltprologue))
+    *(.plt)
+    KEEP(*(.pltepilogue))
+    KEEP(*(.pltgotprologue))
+    *(.plt.got)
+    KEEP(*(.pltgotepilogue))
+    *(.text.startup .text.startup.*)
+    *(.text.exit .text.exit.*)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
+    *(SORT_BY_ALIGNMENT(.text.antiquity))
+    *(SORT_BY_ALIGNMENT(.text.antiquity.*))
+    KEEP(*(.textwindowsprologue))
+    *(.text.windows)
+    KEEP(*(.textwindowsepilogue))
+    *(SORT_BY_ALIGNMENT(.text.modernity))
+    *(SORT_BY_ALIGNMENT(.text.modernity.*))
+    *(SORT_BY_ALIGNMENT(.text.hot))
+    *(SORT_BY_ALIGNMENT(.text.hot.*))
+    KEEP(*(.keep.text))
+    *(.text .stub .text.*)
+    KEEP(*(SORT_BY_NAME(.sort.text.*)))
+    KEEP(*(.ape.pad.test));
+    *(.test.unlikely)
+    *(.test .test.*)
+    KEEP(*(.ape.pad.privileged));
+    . += . > 0 ? 1 : 0;
+    HIDDEN(__privileged_start = .);
+    . += . > 0 ? 1 : 0;
+    *(.privileged)
+    HIDDEN(__privileged_end = .);
+    . += . > 0 ? 1 : 0;
+    KEEP(*(.ape.pad.rodata));
+    *(.rodata .rodata.*)
+    *(.ubsan.types)
+    *(.ubsan.data)
+    KEEP(*(.commentprologue))
+    KEEP(*(.comment))
+    KEEP(*(.commentepilogue))
+    KEEP(*(.idata.ro));
+    KEEP(*(SORT_BY_NAME(.idata.ro.*)))
+    . = ALIGN(8);
+    PROVIDE_HIDDEN(__init_array_start = .);
+    KEEP(*(SORT_BY_INIT_PRIORITY(.init_array.*)
+           SORT_BY_INIT_PRIORITY(.ctors.*)))
+    KEEP(*(.ctors))
+    KEEP(*(.init_array))
+    KEEP(*(.preinit_array))
+    PROVIDE_HIDDEN(__init_array_end = .);
+    . = ALIGN(8);
+    PROVIDE_HIDDEN(__fini_array_start = .);
+    KEEP(*(SORT_BY_INIT_PRIORITY(.fini_array.*)
+           SORT_BY_INIT_PRIORITY(.dtors.*)))
+    KEEP(*(.dtors))
+    PROVIDE_HIDDEN(__fini_array_end = .);
+    KEEP(*(.initroprologue))
+    KEEP(*(SORT_BY_NAME(.initro.*)))
+    KEEP(*(.initroepilogue))
+    KEEP(*(SORT_BY_NAME(.sort.rodata.*)))
+    KEEP(*(.ape.pad.text))
+    . = ALIGN(0x1000);
+    HIDDEN(_etext = .);
+    PROVIDE_HIDDEN(etext = .);
+  } :Rom
+  .data . : {
+    KEEP(*(.dataprologue))
+    *(.data .data.*)
+    KEEP(*(SORT_BY_NAME(.sort.data.*)))
+    . += . > 0 ? 1 : 0;
+    KEEP(*(.gotprologue))
+    *(.got)
+    KEEP(*(.gotepilogue))
+    KEEP(*(.gotpltprologue))
+    *(.got.plt)
+    KEEP(*(.gotpltepilogue))
+    . = ALIGN(8);
+    KEEP(*(SORT_BY_NAME(.piro.relo.sort.*)))
+    PROVIDE_HIDDEN(__relo_end = .);
+    . = ALIGN(8);
+    KEEP(*(SORT_BY_NAME(.piro.data.sort.*)))
+    KEEP(*(.piro.pad.data))
+    . = ALIGN(0x1000);
+    HIDDEN(_edata = .);
+    PROVIDE_HIDDEN(edata = .);
+  } :Ram
+  .zip . : {
+    KEEP(*(SORT_BY_NAME(.zip.*)))
+    HIDDEN(_ezip = .);
+  }
+  .bss ALIGN(8) : {
+    KEEP(*(SORT_BY_NAME(.piro.bss.init.*)))
+    *(.piro.bss)
+    KEEP(*(SORT_BY_NAME(.piro.bss.sort.*)))
+    HIDDEN(__piro_end = .);
+    . += . > 0 ? 1 : 0;
+    *(SORT_BY_ALIGNMENT(.bss))
+    *(SORT_BY_ALIGNMENT(.bss.*))
+    *(COMMON)
+    KEEP(*(SORT_BY_NAME(.sort.bss.*)))
+    . = ALIGN(0x10000);
+    HIDDEN(_end = .);
+    PROVIDE_HIDDEN(end = .);
+  }
+  .shstrtab : { *(.shstrtab) }
+  .strtab : { *(.strtab) }
+  .symtab : { *(.symtab) }
+  .stab 0 : { *(.stab) }
+  .stabstr 0 : { *(.stabstr) }
+  .stab.excl 0 : { *(.stab.excl) }
+  .stab.exclstr 0 : { *(.stab.exclstr) }
+  .stab.index 0 : { *(.stab.index) }
+  .stab.indexstr 0 : { *(.stab.indexstr) }
+  .comment 0 : { *(.comment) }
+  .debug 0 : { *(.debug) }
+  .line 0 : { *(.line) }
+  .debug_srcinfo 0 : { *(.debug_srcinfo) }
+  .debug_sfnames 0 : { *(.debug_sfnames) }
+  .debug_aranges 0 : { *(.debug_aranges) }
+  .debug_pubnames 0 : { *(.debug_pubnames) }
+  .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
+  .debug_abbrev 0 : { *(.debug_abbrev) }
+  .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) }
+  .debug_frame 0 : { *(.debug_frame) }
+  .debug_str 0 : { *(.debug_str) }
+  .debug_loc 0 : { *(.debug_loc) }
+  .debug_macinfo 0 : { *(.debug_macinfo) }
+  .debug_weaknames 0 : { *(.debug_weaknames) }
+  .debug_funcnames 0 : { *(.debug_funcnames) }
+  .debug_typenames 0 : { *(.debug_typenames) }
+  .debug_varnames 0 : { *(.debug_varnames) }
+  .debug_pubtypes 0 : { *(.debug_pubtypes) }
+  .debug_ranges 0 : { *(.debug_ranges) }
+  .debug_macro 0 : { *(.debug_macro) }
+  .debug_addr 0 : { *(.debug_addr) }
+  .gnu.attributes 0 : { KEEP(*(.gnu.attributes)) }
+  .GCC.command.line 0 : { *(.GCC.command.line) }
+  /DISCARD/ : {
+    *(__mcount_loc)
+    *(.discard)
+    *(.yoink)
+    *(.*)
+  }
+}
+HIDDEN(ape_elf_entry = (_start)); HIDDEN(ape_elf_entry_bcs0 = (((((((_start) >> ((0)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((0)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((0)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_entry_bcs1 = (((((((_start) >> ((1)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((1)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((1)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_entry_bcs2 = (((((((_start) >> ((2)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((2)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((2)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_entry_bcs3 = (((((((_start) >> ((3)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((3)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((3)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_entry_bcs4 = (((((((_start) >> ((4)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((4)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((4)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_entry_bcs5 = (((((((_start) >> ((5)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((5)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((5)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_entry_bcs6 = (((((((_start) >> ((6)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((6)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((6)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_entry_bcs7 = (((((((_start) >> ((7)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((7)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((7)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c));
+HIDDEN(ape_elf_phoff = (((ape_phdrs) - (0x400000)))); HIDDEN(ape_elf_phoff_bcs0 = (((((((((ape_phdrs) - (0x400000))) >> ((0)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((0)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((0)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phoff_bcs1 = (((((((((ape_phdrs) - (0x400000))) >> ((1)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((1)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((1)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phoff_bcs2 = (((((((((ape_phdrs) - (0x400000))) >> ((2)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((2)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((2)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phoff_bcs3 = (((((((((ape_phdrs) - (0x400000))) >> ((3)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((3)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((3)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phoff_bcs4 = (((((((((ape_phdrs) - (0x400000))) >> ((4)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((4)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((4)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phoff_bcs5 = (((((((((ape_phdrs) - (0x400000))) >> ((5)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((5)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((5)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phoff_bcs6 = (((((((((ape_phdrs) - (0x400000))) >> ((6)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((6)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((6)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phoff_bcs7 = (((((((((ape_phdrs) - (0x400000))) >> ((7)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((7)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((7)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c));
+HIDDEN(ape_elf_shoff = (0)); HIDDEN(ape_elf_shoff_bcs0 = (((((((0) >> ((0)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((0)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((0)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shoff_bcs1 = (((((((0) >> ((1)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((1)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((1)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shoff_bcs2 = (((((((0) >> ((2)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((2)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((2)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shoff_bcs3 = (((((((0) >> ((3)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((3)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((3)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shoff_bcs4 = (((((((0) >> ((4)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((4)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((4)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shoff_bcs5 = (((((((0) >> ((5)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((5)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((5)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shoff_bcs6 = (((((((0) >> ((6)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((6)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((6)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shoff_bcs7 = (((((((0) >> ((7)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((7)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((7)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c));
+HIDDEN(ape_elf_phnum = ((ape_phdrs_end - ape_phdrs) / 56)); HIDDEN(ape_elf_phnum_bcs0 = ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((0)*8)) >> 0)&0x7) + 0x30) << 24) | (((((((ape_phdrs_end - ape_phdrs) / 56) >> ((0)*8)) >> 3)&0x7) + 0x30) << 16) | ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((0)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phnum_bcs1 = ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((1)*8)) >> 0)&0x7) + 0x30) << 24) | (((((((ape_phdrs_end - ape_phdrs) / 56) >> ((1)*8)) >> 3)&0x7) + 0x30) << 16) | ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((1)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phnum_bcs2 = ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((2)*8)) >> 0)&0x7) + 0x30) << 24) | (((((((ape_phdrs_end - ape_phdrs) / 56) >> ((2)*8)) >> 3)&0x7) + 0x30) << 16) | ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((2)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phnum_bcs3 = ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((3)*8)) >> 0)&0x7) + 0x30) << 24) | (((((((ape_phdrs_end - ape_phdrs) / 56) >> ((3)*8)) >> 3)&0x7) + 0x30) << 16) | ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((3)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c));
+HIDDEN(ape_elf_shnum = (0)); HIDDEN(ape_elf_shnum_bcs0 = (((((((0) >> ((0)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((0)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((0)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shnum_bcs1 = (((((((0) >> ((1)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((1)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((1)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shnum_bcs2 = (((((((0) >> ((2)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((2)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((2)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shnum_bcs3 = (((((((0) >> ((3)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((3)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((3)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c));
+HIDDEN(ape_elf_shstrndx = (0)); HIDDEN(ape_elf_shstrndx_bcs0 = (((((((0) >> ((0)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((0)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((0)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shstrndx_bcs1 = (((((((0) >> ((1)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((1)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((1)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shstrndx_bcs2 = (((((((0) >> ((2)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((2)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((2)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shstrndx_bcs3 = (((((((0) >> ((3)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((3)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((3)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c));
+HIDDEN(__privileged_addr = ((__privileged_start) & -(0x1000)));
+HIDDEN(__privileged_size = ((((__privileged_end) + (0x1000)-1) & -(0x1000)) -
+                            ((__privileged_start) & -(0x1000))));
+HIDDEN(ape_rom_offset = 0);
+HIDDEN(ape_rom_vaddr = ADDR(.head));
+HIDDEN(ape_rom_paddr = LOADADDR(.head));
+HIDDEN(ape_rom_filesz = LOADADDR(.data) - ape_rom_paddr);
+HIDDEN(ape_rom_memsz = ADDR(.data) - ADDR(.head));
+HIDDEN(ape_rom_align = 0x1000);
+HIDDEN(ape_rom_rva = ((ape_rom_vaddr) - (0x400000)));
+HIDDEN(ape_ram_offset = ape_rom_offset + ape_rom_filesz);
+HIDDEN(ape_ram_vaddr = ADDR(.data));
+HIDDEN(ape_ram_paddr = LOADADDR(.data));
+HIDDEN(ape_ram_filesz = SIZEOF(.data));
+HIDDEN(ape_ram_memsz = ADDR(.bss) + SIZEOF(.bss) - ape_ram_vaddr);
+HIDDEN(ape_ram_align = 0x1000);
+HIDDEN(ape_ram_rva = ((ape_ram_vaddr) - (0x400000)));
+HIDDEN(ape_stack_offset = ape_ram_offset + ape_ram_filesz);
+HIDDEN(ape_stack_vaddr = 0x700000000000 - 0x100000);
+HIDDEN(ape_stack_paddr = ape_ram_paddr + ape_ram_filesz);
+HIDDEN(ape_stack_filesz = 0);
+HIDDEN(ape_stack_memsz = 0x100000);
+HIDDEN(ape_stack_align = 16);
+HIDDEN(ape_note_offset = ape_rom_offset + (ape_note - ape_rom_vaddr));
+HIDDEN(ape_note_vaddr = ape_note);
+HIDDEN(ape_note_paddr = ape_rom_paddr + ape_note_offset);
+HIDDEN(ape_note_filesz = ape_note_end - ape_note);
+HIDDEN(ape_note_memsz = ape_note_filesz);
+HIDDEN(ape_note_align = 8);
+HIDDEN(ape_text_offset = ape_rom_offset + LOADADDR(.text) - ape_rom_paddr);
+HIDDEN(ape_text_paddr = LOADADDR(.text));
+HIDDEN(ape_text_vaddr = ADDR(.text));
+HIDDEN(ape_text_filesz = SIZEOF(.text));
+HIDDEN(ape_text_memsz = SIZEOF(.text));
+HIDDEN(ape_text_align = 0x1000);
+HIDDEN(ape_text_rva = ((ape_text_vaddr) - (0x400000)));
+HIDDEN(ape_data_offset = ape_ram_offset + LOADADDR(.data) - ape_ram_paddr);
+HIDDEN(ape_data_paddr = LOADADDR(.data));
+HIDDEN(ape_data_vaddr = ADDR(.data));
+HIDDEN(ape_data_filesz = SIZEOF(.data));
+HIDDEN(ape_data_memsz = SIZEOF(.data));
+HIDDEN(ape_data_align = 0x1000);
+HIDDEN(ape_data_rva = ((ape_data_vaddr) - (0x400000)));
+HIDDEN(ape_bss_offset = ape_ram_offset + LOADADDR(.bss) - ape_ram_paddr);
+HIDDEN(ape_bss_paddr = LOADADDR(.bss));
+HIDDEN(ape_bss_vaddr = ADDR(.bss));
+HIDDEN(ape_bss_filesz = 0);
+HIDDEN(ape_bss_memsz = SIZEOF(.bss));
+HIDDEN(ape_bss_align = 0x1000);
+HIDDEN(ape_macho_dd_skip_bcs0 = ((((ape_macho) - (0x400000)) / 8) < 10000 ? 0x20202020 : (((ape_macho) - (0x400000)) / 8) < 100000 ? 0x30202020 + (((((ape_macho) - (0x400000)) / 8) / 10000 % 10) << 24) : (((ape_macho) - (0x400000)) / 8) < 1000000 ? 0x30302020 + (((((ape_macho) - (0x400000)) / 8) / 10000 % 10) << 24) + (((((ape_macho) - (0x400000)) / 8) / 100000 % 10) << 16) : (((ape_macho) - (0x400000)) / 8) < 10000000 ? 0x30303020 + (((((ape_macho) - (0x400000)) / 8) / 10000 % 10) << 24) + (((((ape_macho) - (0x400000)) / 8) / 100000 % 10) << 16) + (((((ape_macho) - (0x400000)) / 8) / 1000000 % 10) << 8) : (((ape_macho) - (0x400000)) / 8) < 100000000 ? 0x30303030 + (((((ape_macho) - (0x400000)) / 8) / 10000 % 10) << 24) + (((((ape_macho) - (0x400000)) / 8) / 100000 % 10) << 16) + (((((ape_macho) - (0x400000)) / 8) / 1000000 % 10) << 8) + (((((ape_macho) - (0x400000)) / 8) / 10000000 % 10) << 0) : 0xffffffffffffffff)); HIDDEN(ape_macho_dd_skip_bcs1 = ((((ape_macho) - (0x400000)) / 8) == 0 ? 0x20202030 : (((ape_macho) - (0x400000)) / 8) < 10 ? 0x30202020 + (((((ape_macho) - (0x400000)) / 8) % 10) << 24) : (((ape_macho) - (0x400000)) / 8) < 100 ? 0x30302020 + (((((ape_macho) - (0x400000)) / 8) % 10) << 24) + (((((ape_macho) - (0x400000)) / 8) / 10 % 10) << 16) : (((ape_macho) - (0x400000)) / 8) < 1000 ? 0x30303020 + (((((ape_macho) - (0x400000)) / 8) % 10) << 24) + (((((ape_macho) - (0x400000)) / 8) / 10 % 10) << 16) + (((((ape_macho) - (0x400000)) / 8) / 100 % 10) << 8) : 0x30303030 + (((((ape_macho) - (0x400000)) / 8) % 10) << 24) + (((((ape_macho) - (0x400000)) / 8) / 10 % 10) << 16) + (((((ape_macho) - (0x400000)) / 8) / 100 % 10) << 8) + (((((ape_macho) - (0x400000)) / 8) / 1000 % 10) << 0)));
+HIDDEN(ape_macho_dd_count_bcs0 = (((ape_macho_end - ape_macho) / 8) < 10000 ? 0x20202020 : ((ape_macho_end - ape_macho) / 8) < 100000 ? 0x30202020 + ((((ape_macho_end - ape_macho) / 8) / 10000 % 10) << 24) : ((ape_macho_end - ape_macho) / 8) < 1000000 ? 0x30302020 + ((((ape_macho_end - ape_macho) / 8) / 10000 % 10) << 24) + ((((ape_macho_end - ape_macho) / 8) / 100000 % 10) << 16) : ((ape_macho_end - ape_macho) / 8) < 10000000 ? 0x30303020 + ((((ape_macho_end - ape_macho) / 8) / 10000 % 10) << 24) + ((((ape_macho_end - ape_macho) / 8) / 100000 % 10) << 16) + ((((ape_macho_end - ape_macho) / 8) / 1000000 % 10) << 8) : ((ape_macho_end - ape_macho) / 8) < 100000000 ? 0x30303030 + ((((ape_macho_end - ape_macho) / 8) / 10000 % 10) << 24) + ((((ape_macho_end - ape_macho) / 8) / 100000 % 10) << 16) + ((((ape_macho_end - ape_macho) / 8) / 1000000 % 10) << 8) + ((((ape_macho_end - ape_macho) / 8) / 10000000 % 10) << 0) : 0xffffffffffffffff)); HIDDEN(ape_macho_dd_count_bcs1 = (((ape_macho_end - ape_macho) / 8) == 0 ? 0x20202030 : ((ape_macho_end - ape_macho) / 8) < 10 ? 0x30202020 + ((((ape_macho_end - ape_macho) / 8) % 10) << 24) : ((ape_macho_end - ape_macho) / 8) < 100 ? 0x30302020 + ((((ape_macho_end - ape_macho) / 8) % 10) << 24) + ((((ape_macho_end - ape_macho) / 8) / 10 % 10) << 16) : ((ape_macho_end - ape_macho) / 8) < 1000 ? 0x30303020 + ((((ape_macho_end - ape_macho) / 8) % 10) << 24) + ((((ape_macho_end - ape_macho) / 8) / 10 % 10) << 16) + ((((ape_macho_end - ape_macho) / 8) / 100 % 10) << 8) : 0x30303030 + ((((ape_macho_end - ape_macho) / 8) % 10) << 24) + ((((ape_macho_end - ape_macho) / 8) / 10 % 10) << 16) + ((((ape_macho_end - ape_macho) / 8) / 100 % 10) << 8) + ((((ape_macho_end - ape_macho) / 8) / 1000 % 10) << 0)));
+HIDDEN(ape_pe_offset = (ape_pe - ape_mz)); HIDDEN(ape_pe_offset_bcs0 = (((((((ape_pe - ape_mz) >> ((0)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((ape_pe - ape_mz) >> ((0)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((ape_pe - ape_mz) >> ((0)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_pe_offset_bcs1 = (((((((ape_pe - ape_mz) >> ((1)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((ape_pe - ape_mz) >> ((1)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((ape_pe - ape_mz) >> ((1)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_pe_offset_bcs2 = (((((((ape_pe - ape_mz) >> ((2)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((ape_pe - ape_mz) >> ((2)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((ape_pe - ape_mz) >> ((2)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_pe_offset_bcs3 = (((((((ape_pe - ape_mz) >> ((3)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((ape_pe - ape_mz) >> ((3)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((ape_pe - ape_mz) >> ((3)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c));
+HIDDEN(ape_pe_optsz = ape_pe_sections - (ape_pe + 24));
+HIDDEN(ape_pe_shnum = (ape_pe_sections_end - ape_pe_sections) / 40);
+HIDDEN(ape_pe_base = 0x400000);
+HIDDEN(ape_idata = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? ((ape_idata_iat) - (0x400000)) : 0);
+HIDDEN(ape_idata_iatsize = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? ape_idata_iatend - ape_idata_iat : 0);
+HIDDEN(ape_idata = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? ((ape_idata_idt) - (0x400000)) : 0);
+HIDDEN(ape_idata_idtsize = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? ape_idata_idtend - ape_idata_idt : 0);
+HIDDEN(v_ntversion = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? 6 : 1);
+HIDDEN(v_ntdllchar = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? 288 : 0);
+HIDDEN(v_ntsubversion = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? 6 : 5);
+HIDDEN(v_ntsubsystem = ((((255 & 4) == 4) && !DEFINED(EfiMain))
+                        ? (DEFINED(GetMessage)
+                           ? 2
+                           : 3)
+                        : 10));
+HIDDEN(ape_pe_entry = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? WinMain : EfiMain);
+HIDDEN(v_ape_realsectors =
+           (((((((_edata) - (0x400000))) + (4096)-1) & -(4096))) > (0x70000 - 0x2000) ? (0x70000 - 0x2000) : ((((((_edata) - (0x400000))) + (4096)-1) & -(4096)))) / 512);
+HIDDEN(v_ape_realpages = v_ape_realsectors / (4096 / 512));
+HIDDEN(v_ape_highsectors =
+           ((((((_edata) - (0x400000))) + (512)-1) & -(512)) / 512) - v_ape_realsectors);
+HIDDEN(v_zip_cdoffset = DEFINED(__zip_start) ? __zip_start - 0x400000 : 0);;
+HIDDEN(v_zip_cdirsize = DEFINED(__zip_start) ? __zip_end - __zip_start : 0);;
+ASSERT(v_zip_cdirsize % (((46 + 248) + (2)-1) & -(2)) == 0, "bad zip cdir");
+HIDDEN(v_zip_records = DEFINED(__zip_start) ? v_zip_cdirsize / (((46 + 248) + (2)-1) & -(2)) : 0);;
+HIDDEN(v_zip_commentsize = DEFINED(__zip_start) ? _ezip - __zip_end - 22 : 0);;
+HIDDEN(ape_uuid1 = 88172645463325252);
+HIDDEN(ape_uuid2 = 88172645463325252);
+ape_uuid1 = ((ape_uuid1 | (ape_bss_align >> 12)) - (ape_uuid1 & (ape_bss_align >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_bss_align << 25)) - (ape_uuid1 & (ape_bss_align << 25))); ape_uuid1 = ((ape_uuid1 | (ape_bss_align >> 27)) - (ape_uuid1 & (ape_bss_align >> 27))); ape_uuid1 = (ape_uuid1 + (ape_bss_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_bss_align >> 12)) - (ape_uuid2 & (ape_bss_align >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_bss_align << 25)) - (ape_uuid2 & (ape_bss_align << 25))); ape_uuid2 = ((ape_uuid2 | (ape_bss_align >> 27)) - (ape_uuid2 & (ape_bss_align >> 27))); ape_uuid2 = (ape_uuid2 + (ape_bss_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_align >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_bss_filesz >> 12)) - (ape_uuid1 & (ape_bss_filesz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_bss_filesz << 25)) - (ape_uuid1 & (ape_bss_filesz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_bss_filesz >> 27)) - (ape_uuid1 & (ape_bss_filesz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_bss_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_bss_filesz >> 12)) - (ape_uuid2 & (ape_bss_filesz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_bss_filesz << 25)) - (ape_uuid2 & (ape_bss_filesz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_bss_filesz >> 27)) - (ape_uuid2 & (ape_bss_filesz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_bss_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_bss_memsz >> 12)) - (ape_uuid1 & (ape_bss_memsz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_bss_memsz << 25)) - (ape_uuid1 & (ape_bss_memsz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_bss_memsz >> 27)) - (ape_uuid1 & (ape_bss_memsz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_bss_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_bss_memsz >> 12)) - (ape_uuid2 & (ape_bss_memsz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_bss_memsz << 25)) - (ape_uuid2 & (ape_bss_memsz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_bss_memsz >> 27)) - (ape_uuid2 & (ape_bss_memsz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_bss_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_bss_offset >> 12)) - (ape_uuid1 & (ape_bss_offset >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_bss_offset << 25)) - (ape_uuid1 & (ape_bss_offset << 25))); ape_uuid1 = ((ape_uuid1 | (ape_bss_offset >> 27)) - (ape_uuid1 & (ape_bss_offset >> 27))); ape_uuid1 = (ape_uuid1 + (ape_bss_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_bss_offset >> 12)) - (ape_uuid2 & (ape_bss_offset >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_bss_offset << 25)) - (ape_uuid2 & (ape_bss_offset << 25))); ape_uuid2 = ((ape_uuid2 | (ape_bss_offset >> 27)) - (ape_uuid2 & (ape_bss_offset >> 27))); ape_uuid2 = (ape_uuid2 + (ape_bss_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_bss_paddr >> 12)) - (ape_uuid1 & (ape_bss_paddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_bss_paddr << 25)) - (ape_uuid1 & (ape_bss_paddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_bss_paddr >> 27)) - (ape_uuid1 & (ape_bss_paddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_bss_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_bss_paddr >> 12)) - (ape_uuid2 & (ape_bss_paddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_bss_paddr << 25)) - (ape_uuid2 & (ape_bss_paddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_bss_paddr >> 27)) - (ape_uuid2 & (ape_bss_paddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_bss_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_data_filesz >> 12)) - (ape_uuid1 & (ape_data_filesz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_data_filesz << 25)) - (ape_uuid1 & (ape_data_filesz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_data_filesz >> 27)) - (ape_uuid1 & (ape_data_filesz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_data_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_data_filesz >> 12)) - (ape_uuid2 & (ape_data_filesz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_data_filesz << 25)) - (ape_uuid2 & (ape_data_filesz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_data_filesz >> 27)) - (ape_uuid2 & (ape_data_filesz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_data_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_data_memsz >> 12)) - (ape_uuid1 & (ape_data_memsz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_data_memsz << 25)) - (ape_uuid1 & (ape_data_memsz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_data_memsz >> 27)) - (ape_uuid1 & (ape_data_memsz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_data_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_data_memsz >> 12)) - (ape_uuid2 & (ape_data_memsz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_data_memsz << 25)) - (ape_uuid2 & (ape_data_memsz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_data_memsz >> 27)) - (ape_uuid2 & (ape_data_memsz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_data_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_data_offset >> 12)) - (ape_uuid1 & (ape_data_offset >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_data_offset << 25)) - (ape_uuid1 & (ape_data_offset << 25))); ape_uuid1 = ((ape_uuid1 | (ape_data_offset >> 27)) - (ape_uuid1 & (ape_data_offset >> 27))); ape_uuid1 = (ape_uuid1 + (ape_data_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_data_offset >> 12)) - (ape_uuid2 & (ape_data_offset >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_data_offset << 25)) - (ape_uuid2 & (ape_data_offset << 25))); ape_uuid2 = ((ape_uuid2 | (ape_data_offset >> 27)) - (ape_uuid2 & (ape_data_offset >> 27))); ape_uuid2 = (ape_uuid2 + (ape_data_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_data_paddr >> 12)) - (ape_uuid1 & (ape_data_paddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_data_paddr << 25)) - (ape_uuid1 & (ape_data_paddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_data_paddr >> 27)) - (ape_uuid1 & (ape_data_paddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_data_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_data_paddr >> 12)) - (ape_uuid2 & (ape_data_paddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_data_paddr << 25)) - (ape_uuid2 & (ape_data_paddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_data_paddr >> 27)) - (ape_uuid2 & (ape_data_paddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_data_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_data_rva >> 12)) - (ape_uuid1 & (ape_data_rva >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_data_rva << 25)) - (ape_uuid1 & (ape_data_rva << 25))); ape_uuid1 = ((ape_uuid1 | (ape_data_rva >> 27)) - (ape_uuid1 & (ape_data_rva >> 27))); ape_uuid1 = (ape_uuid1 + (ape_data_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_data_rva >> 12)) - (ape_uuid2 & (ape_data_rva >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_data_rva << 25)) - (ape_uuid2 & (ape_data_rva << 25))); ape_uuid2 = ((ape_uuid2 | (ape_data_rva >> 27)) - (ape_uuid2 & (ape_data_rva >> 27))); ape_uuid2 = (ape_uuid2 + (ape_data_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_data_vaddr >> 12)) - (ape_uuid1 & (ape_data_vaddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_data_vaddr << 25)) - (ape_uuid1 & (ape_data_vaddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_data_vaddr >> 27)) - (ape_uuid1 & (ape_data_vaddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_data_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_data_vaddr >> 12)) - (ape_uuid2 & (ape_data_vaddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_data_vaddr << 25)) - (ape_uuid2 & (ape_data_vaddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_data_vaddr >> 27)) - (ape_uuid2 & (ape_data_vaddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_data_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_elf_entry >> 12)) - (ape_uuid1 & (ape_elf_entry >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_elf_entry << 25)) - (ape_uuid1 & (ape_elf_entry << 25))); ape_uuid1 = ((ape_uuid1 | (ape_elf_entry >> 27)) - (ape_uuid1 & (ape_elf_entry >> 27))); ape_uuid1 = (ape_uuid1 + (ape_elf_entry >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_entry >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_entry >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_entry >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_elf_entry >> 12)) - (ape_uuid2 & (ape_elf_entry >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_elf_entry << 25)) - (ape_uuid2 & (ape_elf_entry << 25))); ape_uuid2 = ((ape_uuid2 | (ape_elf_entry >> 27)) - (ape_uuid2 & (ape_elf_entry >> 27))); ape_uuid2 = (ape_uuid2 + (ape_elf_entry >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_entry >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_entry >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_entry >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_elf_phnum >> 12)) - (ape_uuid1 & (ape_elf_phnum >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_elf_phnum << 25)) - (ape_uuid1 & (ape_elf_phnum << 25))); ape_uuid1 = ((ape_uuid1 | (ape_elf_phnum >> 27)) - (ape_uuid1 & (ape_elf_phnum >> 27))); ape_uuid1 = (ape_uuid1 + (ape_elf_phnum >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_phnum >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_phnum >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_phnum >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_elf_phnum >> 12)) - (ape_uuid2 & (ape_elf_phnum >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_elf_phnum << 25)) - (ape_uuid2 & (ape_elf_phnum << 25))); ape_uuid2 = ((ape_uuid2 | (ape_elf_phnum >> 27)) - (ape_uuid2 & (ape_elf_phnum >> 27))); ape_uuid2 = (ape_uuid2 + (ape_elf_phnum >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_phnum >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_phnum >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_phnum >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_elf_phoff >> 12)) - (ape_uuid1 & (ape_elf_phoff >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_elf_phoff << 25)) - (ape_uuid1 & (ape_elf_phoff << 25))); ape_uuid1 = ((ape_uuid1 | (ape_elf_phoff >> 27)) - (ape_uuid1 & (ape_elf_phoff >> 27))); ape_uuid1 = (ape_uuid1 + (ape_elf_phoff >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_phoff >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_phoff >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_phoff >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_elf_phoff >> 12)) - (ape_uuid2 & (ape_elf_phoff >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_elf_phoff << 25)) - (ape_uuid2 & (ape_elf_phoff << 25))); ape_uuid2 = ((ape_uuid2 | (ape_elf_phoff >> 27)) - (ape_uuid2 & (ape_elf_phoff >> 27))); ape_uuid2 = (ape_uuid2 + (ape_elf_phoff >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_phoff >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_phoff >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_phoff >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_elf_shnum >> 12)) - (ape_uuid1 & (ape_elf_shnum >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_elf_shnum << 25)) - (ape_uuid1 & (ape_elf_shnum << 25))); ape_uuid1 = ((ape_uuid1 | (ape_elf_shnum >> 27)) - (ape_uuid1 & (ape_elf_shnum >> 27))); ape_uuid1 = (ape_uuid1 + (ape_elf_shnum >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shnum >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shnum >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shnum >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_elf_shnum >> 12)) - (ape_uuid2 & (ape_elf_shnum >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_elf_shnum << 25)) - (ape_uuid2 & (ape_elf_shnum << 25))); ape_uuid2 = ((ape_uuid2 | (ape_elf_shnum >> 27)) - (ape_uuid2 & (ape_elf_shnum >> 27))); ape_uuid2 = (ape_uuid2 + (ape_elf_shnum >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shnum >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shnum >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shnum >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_elf_shoff >> 12)) - (ape_uuid1 & (ape_elf_shoff >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_elf_shoff << 25)) - (ape_uuid1 & (ape_elf_shoff << 25))); ape_uuid1 = ((ape_uuid1 | (ape_elf_shoff >> 27)) - (ape_uuid1 & (ape_elf_shoff >> 27))); ape_uuid1 = (ape_uuid1 + (ape_elf_shoff >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shoff >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shoff >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shoff >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_elf_shoff >> 12)) - (ape_uuid2 & (ape_elf_shoff >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_elf_shoff << 25)) - (ape_uuid2 & (ape_elf_shoff << 25))); ape_uuid2 = ((ape_uuid2 | (ape_elf_shoff >> 27)) - (ape_uuid2 & (ape_elf_shoff >> 27))); ape_uuid2 = (ape_uuid2 + (ape_elf_shoff >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shoff >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shoff >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shoff >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_elf_shstrndx >> 12)) - (ape_uuid1 & (ape_elf_shstrndx >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_elf_shstrndx << 25)) - (ape_uuid1 & (ape_elf_shstrndx << 25))); ape_uuid1 = ((ape_uuid1 | (ape_elf_shstrndx >> 27)) - (ape_uuid1 & (ape_elf_shstrndx >> 27))); ape_uuid1 = (ape_uuid1 + (ape_elf_shstrndx >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shstrndx >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shstrndx >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shstrndx >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_elf_shstrndx >> 12)) - (ape_uuid2 & (ape_elf_shstrndx >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_elf_shstrndx << 25)) - (ape_uuid2 & (ape_elf_shstrndx << 25))); ape_uuid2 = ((ape_uuid2 | (ape_elf_shstrndx >> 27)) - (ape_uuid2 & (ape_elf_shstrndx >> 27))); ape_uuid2 = (ape_uuid2 + (ape_elf_shstrndx >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shstrndx >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shstrndx >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shstrndx >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_macho_end >> 12)) - (ape_uuid1 & (ape_macho_end >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_macho_end << 25)) - (ape_uuid1 & (ape_macho_end << 25))); ape_uuid1 = ((ape_uuid1 | (ape_macho_end >> 27)) - (ape_uuid1 & (ape_macho_end >> 27))); ape_uuid1 = (ape_uuid1 + (ape_macho_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_macho_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_macho_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_macho_end >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_macho_end >> 12)) - (ape_uuid2 & (ape_macho_end >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_macho_end << 25)) - (ape_uuid2 & (ape_macho_end << 25))); ape_uuid2 = ((ape_uuid2 | (ape_macho_end >> 27)) - (ape_uuid2 & (ape_macho_end >> 27))); ape_uuid2 = (ape_uuid2 + (ape_macho_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_macho_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_macho_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_macho_end >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_note >> 12)) - (ape_uuid1 & (ape_note >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note << 25)) - (ape_uuid1 & (ape_note << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note >> 27)) - (ape_uuid1 & (ape_note >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note >> 12)) - (ape_uuid2 & (ape_note >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note << 25)) - (ape_uuid2 & (ape_note << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note >> 27)) - (ape_uuid2 & (ape_note >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_note_align >> 12)) - (ape_uuid1 & (ape_note_align >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note_align << 25)) - (ape_uuid1 & (ape_note_align << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note_align >> 27)) - (ape_uuid1 & (ape_note_align >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note_align >> 12)) - (ape_uuid2 & (ape_note_align >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note_align << 25)) - (ape_uuid2 & (ape_note_align << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note_align >> 27)) - (ape_uuid2 & (ape_note_align >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_align >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_note_end >> 12)) - (ape_uuid1 & (ape_note_end >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note_end << 25)) - (ape_uuid1 & (ape_note_end << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note_end >> 27)) - (ape_uuid1 & (ape_note_end >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_end >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note_end >> 12)) - (ape_uuid2 & (ape_note_end >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note_end << 25)) - (ape_uuid2 & (ape_note_end << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note_end >> 27)) - (ape_uuid2 & (ape_note_end >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_end >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_note_filesz >> 12)) - (ape_uuid1 & (ape_note_filesz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note_filesz << 25)) - (ape_uuid1 & (ape_note_filesz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note_filesz >> 27)) - (ape_uuid1 & (ape_note_filesz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note_filesz >> 12)) - (ape_uuid2 & (ape_note_filesz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note_filesz << 25)) - (ape_uuid2 & (ape_note_filesz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note_filesz >> 27)) - (ape_uuid2 & (ape_note_filesz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_note_memsz >> 12)) - (ape_uuid1 & (ape_note_memsz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note_memsz << 25)) - (ape_uuid1 & (ape_note_memsz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note_memsz >> 27)) - (ape_uuid1 & (ape_note_memsz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note_memsz >> 12)) - (ape_uuid2 & (ape_note_memsz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note_memsz << 25)) - (ape_uuid2 & (ape_note_memsz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note_memsz >> 27)) - (ape_uuid2 & (ape_note_memsz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_note_offset >> 12)) - (ape_uuid1 & (ape_note_offset >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note_offset << 25)) - (ape_uuid1 & (ape_note_offset << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note_offset >> 27)) - (ape_uuid1 & (ape_note_offset >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note_offset >> 12)) - (ape_uuid2 & (ape_note_offset >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note_offset << 25)) - (ape_uuid2 & (ape_note_offset << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note_offset >> 27)) - (ape_uuid2 & (ape_note_offset >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_note_paddr >> 12)) - (ape_uuid1 & (ape_note_paddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note_paddr << 25)) - (ape_uuid1 & (ape_note_paddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note_paddr >> 27)) - (ape_uuid1 & (ape_note_paddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note_paddr >> 12)) - (ape_uuid2 & (ape_note_paddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note_paddr << 25)) - (ape_uuid2 & (ape_note_paddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note_paddr >> 27)) - (ape_uuid2 & (ape_note_paddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_note_vaddr >> 12)) - (ape_uuid1 & (ape_note_vaddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note_vaddr << 25)) - (ape_uuid1 & (ape_note_vaddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note_vaddr >> 27)) - (ape_uuid1 & (ape_note_vaddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note_vaddr >> 12)) - (ape_uuid2 & (ape_note_vaddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note_vaddr << 25)) - (ape_uuid2 & (ape_note_vaddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note_vaddr >> 27)) - (ape_uuid2 & (ape_note_vaddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_ram_align >> 12)) - (ape_uuid1 & (ape_ram_align >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_ram_align << 25)) - (ape_uuid1 & (ape_ram_align << 25))); ape_uuid1 = ((ape_uuid1 | (ape_ram_align >> 27)) - (ape_uuid1 & (ape_ram_align >> 27))); ape_uuid1 = (ape_uuid1 + (ape_ram_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_ram_align >> 12)) - (ape_uuid2 & (ape_ram_align >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_ram_align << 25)) - (ape_uuid2 & (ape_ram_align << 25))); ape_uuid2 = ((ape_uuid2 | (ape_ram_align >> 27)) - (ape_uuid2 & (ape_ram_align >> 27))); ape_uuid2 = (ape_uuid2 + (ape_ram_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_align >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_ram_filesz >> 12)) - (ape_uuid1 & (ape_ram_filesz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_ram_filesz << 25)) - (ape_uuid1 & (ape_ram_filesz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_ram_filesz >> 27)) - (ape_uuid1 & (ape_ram_filesz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_ram_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_ram_filesz >> 12)) - (ape_uuid2 & (ape_ram_filesz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_ram_filesz << 25)) - (ape_uuid2 & (ape_ram_filesz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_ram_filesz >> 27)) - (ape_uuid2 & (ape_ram_filesz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_ram_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_ram_memsz >> 12)) - (ape_uuid1 & (ape_ram_memsz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_ram_memsz << 25)) - (ape_uuid1 & (ape_ram_memsz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_ram_memsz >> 27)) - (ape_uuid1 & (ape_ram_memsz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_ram_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_ram_memsz >> 12)) - (ape_uuid2 & (ape_ram_memsz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_ram_memsz << 25)) - (ape_uuid2 & (ape_ram_memsz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_ram_memsz >> 27)) - (ape_uuid2 & (ape_ram_memsz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_ram_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_ram_offset >> 12)) - (ape_uuid1 & (ape_ram_offset >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_ram_offset << 25)) - (ape_uuid1 & (ape_ram_offset << 25))); ape_uuid1 = ((ape_uuid1 | (ape_ram_offset >> 27)) - (ape_uuid1 & (ape_ram_offset >> 27))); ape_uuid1 = (ape_uuid1 + (ape_ram_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_ram_offset >> 12)) - (ape_uuid2 & (ape_ram_offset >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_ram_offset << 25)) - (ape_uuid2 & (ape_ram_offset << 25))); ape_uuid2 = ((ape_uuid2 | (ape_ram_offset >> 27)) - (ape_uuid2 & (ape_ram_offset >> 27))); ape_uuid2 = (ape_uuid2 + (ape_ram_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_ram_paddr >> 12)) - (ape_uuid1 & (ape_ram_paddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_ram_paddr << 25)) - (ape_uuid1 & (ape_ram_paddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_ram_paddr >> 27)) - (ape_uuid1 & (ape_ram_paddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_ram_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_ram_paddr >> 12)) - (ape_uuid2 & (ape_ram_paddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_ram_paddr << 25)) - (ape_uuid2 & (ape_ram_paddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_ram_paddr >> 27)) - (ape_uuid2 & (ape_ram_paddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_ram_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_ram_rva >> 12)) - (ape_uuid1 & (ape_ram_rva >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_ram_rva << 25)) - (ape_uuid1 & (ape_ram_rva << 25))); ape_uuid1 = ((ape_uuid1 | (ape_ram_rva >> 27)) - (ape_uuid1 & (ape_ram_rva >> 27))); ape_uuid1 = (ape_uuid1 + (ape_ram_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_ram_rva >> 12)) - (ape_uuid2 & (ape_ram_rva >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_ram_rva << 25)) - (ape_uuid2 & (ape_ram_rva << 25))); ape_uuid2 = ((ape_uuid2 | (ape_ram_rva >> 27)) - (ape_uuid2 & (ape_ram_rva >> 27))); ape_uuid2 = (ape_uuid2 + (ape_ram_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_ram_vaddr >> 12)) - (ape_uuid1 & (ape_ram_vaddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_ram_vaddr << 25)) - (ape_uuid1 & (ape_ram_vaddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_ram_vaddr >> 27)) - (ape_uuid1 & (ape_ram_vaddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_ram_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_ram_vaddr >> 12)) - (ape_uuid2 & (ape_ram_vaddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_ram_vaddr << 25)) - (ape_uuid2 & (ape_ram_vaddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_ram_vaddr >> 27)) - (ape_uuid2 & (ape_ram_vaddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_ram_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_rom_align >> 12)) - (ape_uuid1 & (ape_rom_align >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_rom_align << 25)) - (ape_uuid1 & (ape_rom_align << 25))); ape_uuid1 = ((ape_uuid1 | (ape_rom_align >> 27)) - (ape_uuid1 & (ape_rom_align >> 27))); ape_uuid1 = (ape_uuid1 + (ape_rom_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_rom_align >> 12)) - (ape_uuid2 & (ape_rom_align >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_rom_align << 25)) - (ape_uuid2 & (ape_rom_align << 25))); ape_uuid2 = ((ape_uuid2 | (ape_rom_align >> 27)) - (ape_uuid2 & (ape_rom_align >> 27))); ape_uuid2 = (ape_uuid2 + (ape_rom_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_align >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_rom_filesz >> 12)) - (ape_uuid1 & (ape_rom_filesz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_rom_filesz << 25)) - (ape_uuid1 & (ape_rom_filesz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_rom_filesz >> 27)) - (ape_uuid1 & (ape_rom_filesz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_rom_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_rom_filesz >> 12)) - (ape_uuid2 & (ape_rom_filesz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_rom_filesz << 25)) - (ape_uuid2 & (ape_rom_filesz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_rom_filesz >> 27)) - (ape_uuid2 & (ape_rom_filesz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_rom_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_rom_memsz >> 12)) - (ape_uuid1 & (ape_rom_memsz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_rom_memsz << 25)) - (ape_uuid1 & (ape_rom_memsz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_rom_memsz >> 27)) - (ape_uuid1 & (ape_rom_memsz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_rom_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_rom_memsz >> 12)) - (ape_uuid2 & (ape_rom_memsz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_rom_memsz << 25)) - (ape_uuid2 & (ape_rom_memsz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_rom_memsz >> 27)) - (ape_uuid2 & (ape_rom_memsz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_rom_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_rom_offset >> 12)) - (ape_uuid1 & (ape_rom_offset >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_rom_offset << 25)) - (ape_uuid1 & (ape_rom_offset << 25))); ape_uuid1 = ((ape_uuid1 | (ape_rom_offset >> 27)) - (ape_uuid1 & (ape_rom_offset >> 27))); ape_uuid1 = (ape_uuid1 + (ape_rom_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_rom_offset >> 12)) - (ape_uuid2 & (ape_rom_offset >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_rom_offset << 25)) - (ape_uuid2 & (ape_rom_offset << 25))); ape_uuid2 = ((ape_uuid2 | (ape_rom_offset >> 27)) - (ape_uuid2 & (ape_rom_offset >> 27))); ape_uuid2 = (ape_uuid2 + (ape_rom_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_rom_paddr >> 12)) - (ape_uuid1 & (ape_rom_paddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_rom_paddr << 25)) - (ape_uuid1 & (ape_rom_paddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_rom_paddr >> 27)) - (ape_uuid1 & (ape_rom_paddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_rom_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_rom_paddr >> 12)) - (ape_uuid2 & (ape_rom_paddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_rom_paddr << 25)) - (ape_uuid2 & (ape_rom_paddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_rom_paddr >> 27)) - (ape_uuid2 & (ape_rom_paddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_rom_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_rom_rva >> 12)) - (ape_uuid1 & (ape_rom_rva >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_rom_rva << 25)) - (ape_uuid1 & (ape_rom_rva << 25))); ape_uuid1 = ((ape_uuid1 | (ape_rom_rva >> 27)) - (ape_uuid1 & (ape_rom_rva >> 27))); ape_uuid1 = (ape_uuid1 + (ape_rom_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_rom_rva >> 12)) - (ape_uuid2 & (ape_rom_rva >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_rom_rva << 25)) - (ape_uuid2 & (ape_rom_rva << 25))); ape_uuid2 = ((ape_uuid2 | (ape_rom_rva >> 27)) - (ape_uuid2 & (ape_rom_rva >> 27))); ape_uuid2 = (ape_uuid2 + (ape_rom_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_rom_vaddr >> 12)) - (ape_uuid1 & (ape_rom_vaddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_rom_vaddr << 25)) - (ape_uuid1 & (ape_rom_vaddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_rom_vaddr >> 27)) - (ape_uuid1 & (ape_rom_vaddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_rom_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_rom_vaddr >> 12)) - (ape_uuid2 & (ape_rom_vaddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_rom_vaddr << 25)) - (ape_uuid2 & (ape_rom_vaddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_rom_vaddr >> 27)) - (ape_uuid2 & (ape_rom_vaddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_rom_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_text_align >> 12)) - (ape_uuid1 & (ape_text_align >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_text_align << 25)) - (ape_uuid1 & (ape_text_align << 25))); ape_uuid1 = ((ape_uuid1 | (ape_text_align >> 27)) - (ape_uuid1 & (ape_text_align >> 27))); ape_uuid1 = (ape_uuid1 + (ape_text_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_text_align >> 12)) - (ape_uuid2 & (ape_text_align >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_text_align << 25)) - (ape_uuid2 & (ape_text_align << 25))); ape_uuid2 = ((ape_uuid2 | (ape_text_align >> 27)) - (ape_uuid2 & (ape_text_align >> 27))); ape_uuid2 = (ape_uuid2 + (ape_text_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_align >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_text_filesz >> 12)) - (ape_uuid1 & (ape_text_filesz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_text_filesz << 25)) - (ape_uuid1 & (ape_text_filesz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_text_filesz >> 27)) - (ape_uuid1 & (ape_text_filesz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_text_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_text_filesz >> 12)) - (ape_uuid2 & (ape_text_filesz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_text_filesz << 25)) - (ape_uuid2 & (ape_text_filesz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_text_filesz >> 27)) - (ape_uuid2 & (ape_text_filesz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_text_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_text_memsz >> 12)) - (ape_uuid1 & (ape_text_memsz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_text_memsz << 25)) - (ape_uuid1 & (ape_text_memsz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_text_memsz >> 27)) - (ape_uuid1 & (ape_text_memsz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_text_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_text_memsz >> 12)) - (ape_uuid2 & (ape_text_memsz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_text_memsz << 25)) - (ape_uuid2 & (ape_text_memsz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_text_memsz >> 27)) - (ape_uuid2 & (ape_text_memsz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_text_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_text_offset >> 12)) - (ape_uuid1 & (ape_text_offset >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_text_offset << 25)) - (ape_uuid1 & (ape_text_offset << 25))); ape_uuid1 = ((ape_uuid1 | (ape_text_offset >> 27)) - (ape_uuid1 & (ape_text_offset >> 27))); ape_uuid1 = (ape_uuid1 + (ape_text_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_text_offset >> 12)) - (ape_uuid2 & (ape_text_offset >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_text_offset << 25)) - (ape_uuid2 & (ape_text_offset << 25))); ape_uuid2 = ((ape_uuid2 | (ape_text_offset >> 27)) - (ape_uuid2 & (ape_text_offset >> 27))); ape_uuid2 = (ape_uuid2 + (ape_text_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_text_paddr >> 12)) - (ape_uuid1 & (ape_text_paddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_text_paddr << 25)) - (ape_uuid1 & (ape_text_paddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_text_paddr >> 27)) - (ape_uuid1 & (ape_text_paddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_text_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_text_paddr >> 12)) - (ape_uuid2 & (ape_text_paddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_text_paddr << 25)) - (ape_uuid2 & (ape_text_paddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_text_paddr >> 27)) - (ape_uuid2 & (ape_text_paddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_text_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_text_rva >> 12)) - (ape_uuid1 & (ape_text_rva >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_text_rva << 25)) - (ape_uuid1 & (ape_text_rva << 25))); ape_uuid1 = ((ape_uuid1 | (ape_text_rva >> 27)) - (ape_uuid1 & (ape_text_rva >> 27))); ape_uuid1 = (ape_uuid1 + (ape_text_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_text_rva >> 12)) - (ape_uuid2 & (ape_text_rva >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_text_rva << 25)) - (ape_uuid2 & (ape_text_rva << 25))); ape_uuid2 = ((ape_uuid2 | (ape_text_rva >> 27)) - (ape_uuid2 & (ape_text_rva >> 27))); ape_uuid2 = (ape_uuid2 + (ape_text_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_text_vaddr >> 12)) - (ape_uuid1 & (ape_text_vaddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_text_vaddr << 25)) - (ape_uuid1 & (ape_text_vaddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_text_vaddr >> 27)) - (ape_uuid1 & (ape_text_vaddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_text_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_text_vaddr >> 12)) - (ape_uuid2 & (ape_text_vaddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_text_vaddr << 25)) - (ape_uuid2 & (ape_text_vaddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_text_vaddr >> 27)) - (ape_uuid2 & (ape_text_vaddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_text_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ADDR(.bss) >> 12)) - (ape_uuid1 & (ADDR(.bss) >> 12))); ape_uuid1 = ((ape_uuid1 | (ADDR(.bss) << 25)) - (ape_uuid1 & (ADDR(.bss) << 25))); ape_uuid1 = ((ape_uuid1 | (ADDR(.bss) >> 27)) - (ape_uuid1 & (ADDR(.bss) >> 27))); ape_uuid1 = (ape_uuid1 + (ADDR(.bss) >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ADDR(.bss) >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ADDR(.bss) >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ADDR(.bss) >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ADDR(.bss) >> 12)) - (ape_uuid2 & (ADDR(.bss) >> 12))); ape_uuid2 = ((ape_uuid2 | (ADDR(.bss) << 25)) - (ape_uuid2 & (ADDR(.bss) << 25))); ape_uuid2 = ((ape_uuid2 | (ADDR(.bss) >> 27)) - (ape_uuid2 & (ADDR(.bss) >> 27))); ape_uuid2 = (ape_uuid2 + (ADDR(.bss) >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ADDR(.bss) >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ADDR(.bss) >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ADDR(.bss) >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (_start >> 12)) - (ape_uuid1 & (_start >> 12))); ape_uuid1 = ((ape_uuid1 | (_start << 25)) - (ape_uuid1 & (_start << 25))); ape_uuid1 = ((ape_uuid1 | (_start >> 27)) - (ape_uuid1 & (_start >> 27))); ape_uuid1 = (ape_uuid1 + (_start >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (_start >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (_start >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (_start >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (_start >> 12)) - (ape_uuid2 & (_start >> 12))); ape_uuid2 = ((ape_uuid2 | (_start << 25)) - (ape_uuid2 & (_start << 25))); ape_uuid2 = ((ape_uuid2 | (_start >> 27)) - (ape_uuid2 & (_start >> 27))); ape_uuid2 = (ape_uuid2 + (_start >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (_start >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (_start >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (_start >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_phdrs >> 12)) - (ape_uuid1 & (ape_phdrs >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_phdrs << 25)) - (ape_uuid1 & (ape_phdrs << 25))); ape_uuid1 = ((ape_uuid1 | (ape_phdrs >> 27)) - (ape_uuid1 & (ape_phdrs >> 27))); ape_uuid1 = (ape_uuid1 + (ape_phdrs >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_phdrs >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_phdrs >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_phdrs >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_phdrs >> 12)) - (ape_uuid2 & (ape_phdrs >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_phdrs << 25)) - (ape_uuid2 & (ape_phdrs << 25))); ape_uuid2 = ((ape_uuid2 | (ape_phdrs >> 27)) - (ape_uuid2 & (ape_phdrs >> 27))); ape_uuid2 = (ape_uuid2 + (ape_phdrs >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_phdrs >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_phdrs >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_phdrs >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (v_ape_realsectors >> 12)) - (ape_uuid1 & (v_ape_realsectors >> 12))); ape_uuid1 = ((ape_uuid1 | (v_ape_realsectors << 25)) - (ape_uuid1 & (v_ape_realsectors << 25))); ape_uuid1 = ((ape_uuid1 | (v_ape_realsectors >> 27)) - (ape_uuid1 & (v_ape_realsectors >> 27))); ape_uuid1 = (ape_uuid1 + (v_ape_realsectors >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (v_ape_realsectors >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (v_ape_realsectors >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (v_ape_realsectors >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (v_ape_realsectors >> 12)) - (ape_uuid2 & (v_ape_realsectors >> 12))); ape_uuid2 = ((ape_uuid2 | (v_ape_realsectors << 25)) - (ape_uuid2 & (v_ape_realsectors << 25))); ape_uuid2 = ((ape_uuid2 | (v_ape_realsectors >> 27)) - (ape_uuid2 & (v_ape_realsectors >> 27))); ape_uuid2 = (ape_uuid2 + (v_ape_realsectors >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (v_ape_realsectors >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (v_ape_realsectors >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (v_ape_realsectors >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_macho >> 12)) - (ape_uuid1 & (ape_macho >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_macho << 25)) - (ape_uuid1 & (ape_macho << 25))); ape_uuid1 = ((ape_uuid1 | (ape_macho >> 27)) - (ape_uuid1 & (ape_macho >> 27))); ape_uuid1 = (ape_uuid1 + (ape_macho >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_macho >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_macho >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_macho >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_macho >> 12)) - (ape_uuid2 & (ape_macho >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_macho << 25)) - (ape_uuid2 & (ape_macho << 25))); ape_uuid2 = ((ape_uuid2 | (ape_macho >> 27)) - (ape_uuid2 & (ape_macho >> 27))); ape_uuid2 = (ape_uuid2 + (ape_macho >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_macho >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_macho >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_macho >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_mz >> 12)) - (ape_uuid1 & (ape_mz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_mz << 25)) - (ape_uuid1 & (ape_mz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_mz >> 27)) - (ape_uuid1 & (ape_mz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_mz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_mz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_mz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_mz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_mz >> 12)) - (ape_uuid2 & (ape_mz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_mz << 25)) - (ape_uuid2 & (ape_mz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_mz >> 27)) - (ape_uuid2 & (ape_mz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_mz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_mz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_mz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_mz >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_pe >> 12)) - (ape_uuid1 & (ape_pe >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_pe << 25)) - (ape_uuid1 & (ape_pe << 25))); ape_uuid1 = ((ape_uuid1 | (ape_pe >> 27)) - (ape_uuid1 & (ape_pe >> 27))); ape_uuid1 = (ape_uuid1 + (ape_pe >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_pe >> 12)) - (ape_uuid2 & (ape_pe >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_pe << 25)) - (ape_uuid2 & (ape_pe << 25))); ape_uuid2 = ((ape_uuid2 | (ape_pe >> 27)) - (ape_uuid2 & (ape_pe >> 27))); ape_uuid2 = (ape_uuid2 + (ape_pe >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_pe_offset >> 12)) - (ape_uuid1 & (ape_pe_offset >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_pe_offset << 25)) - (ape_uuid1 & (ape_pe_offset << 25))); ape_uuid1 = ((ape_uuid1 | (ape_pe_offset >> 27)) - (ape_uuid1 & (ape_pe_offset >> 27))); ape_uuid1 = (ape_uuid1 + (ape_pe_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_pe_offset >> 12)) - (ape_uuid2 & (ape_pe_offset >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_pe_offset << 25)) - (ape_uuid2 & (ape_pe_offset << 25))); ape_uuid2 = ((ape_uuid2 | (ape_pe_offset >> 27)) - (ape_uuid2 & (ape_pe_offset >> 27))); ape_uuid2 = (ape_uuid2 + (ape_pe_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_pe_optsz >> 12)) - (ape_uuid1 & (ape_pe_optsz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_pe_optsz << 25)) - (ape_uuid1 & (ape_pe_optsz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_pe_optsz >> 27)) - (ape_uuid1 & (ape_pe_optsz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_pe_optsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_optsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_optsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_optsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_pe_optsz >> 12)) - (ape_uuid2 & (ape_pe_optsz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_pe_optsz << 25)) - (ape_uuid2 & (ape_pe_optsz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_pe_optsz >> 27)) - (ape_uuid2 & (ape_pe_optsz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_pe_optsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_optsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_optsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_optsz >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_pe_sections >> 12)) - (ape_uuid1 & (ape_pe_sections >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_pe_sections << 25)) - (ape_uuid1 & (ape_pe_sections << 25))); ape_uuid1 = ((ape_uuid1 | (ape_pe_sections >> 27)) - (ape_uuid1 & (ape_pe_sections >> 27))); ape_uuid1 = (ape_uuid1 + (ape_pe_sections >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_sections >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_sections >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_sections >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_pe_sections >> 12)) - (ape_uuid2 & (ape_pe_sections >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_pe_sections << 25)) - (ape_uuid2 & (ape_pe_sections << 25))); ape_uuid2 = ((ape_uuid2 | (ape_pe_sections >> 27)) - (ape_uuid2 & (ape_pe_sections >> 27))); ape_uuid2 = (ape_uuid2 + (ape_pe_sections >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_sections >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_sections >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_sections >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_pe_sections_end >> 12)) - (ape_uuid1 & (ape_pe_sections_end >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_pe_sections_end << 25)) - (ape_uuid1 & (ape_pe_sections_end << 25))); ape_uuid1 = ((ape_uuid1 | (ape_pe_sections_end >> 27)) - (ape_uuid1 & (ape_pe_sections_end >> 27))); ape_uuid1 = (ape_uuid1 + (ape_pe_sections_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_sections_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_sections_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_sections_end >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_pe_sections_end >> 12)) - (ape_uuid2 & (ape_pe_sections_end >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_pe_sections_end << 25)) - (ape_uuid2 & (ape_pe_sections_end << 25))); ape_uuid2 = ((ape_uuid2 | (ape_pe_sections_end >> 27)) - (ape_uuid2 & (ape_pe_sections_end >> 27))); ape_uuid2 = (ape_uuid2 + (ape_pe_sections_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_sections_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_sections_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_sections_end >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_pe_shnum >> 12)) - (ape_uuid1 & (ape_pe_shnum >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_pe_shnum << 25)) - (ape_uuid1 & (ape_pe_shnum << 25))); ape_uuid1 = ((ape_uuid1 | (ape_pe_shnum >> 27)) - (ape_uuid1 & (ape_pe_shnum >> 27))); ape_uuid1 = (ape_uuid1 + (ape_pe_shnum >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_shnum >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_shnum >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_shnum >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_pe_shnum >> 12)) - (ape_uuid2 & (ape_pe_shnum >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_pe_shnum << 25)) - (ape_uuid2 & (ape_pe_shnum << 25))); ape_uuid2 = ((ape_uuid2 | (ape_pe_shnum >> 27)) - (ape_uuid2 & (ape_pe_shnum >> 27))); ape_uuid2 = (ape_uuid2 + (ape_pe_shnum >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_shnum >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_shnum >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_shnum >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (ape_phdrs_end >> 12)) - (ape_uuid1 & (ape_phdrs_end >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_phdrs_end << 25)) - (ape_uuid1 & (ape_phdrs_end << 25))); ape_uuid1 = ((ape_uuid1 | (ape_phdrs_end >> 27)) - (ape_uuid1 & (ape_phdrs_end >> 27))); ape_uuid1 = (ape_uuid1 + (ape_phdrs_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_phdrs_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_phdrs_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_phdrs_end >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_phdrs_end >> 12)) - (ape_uuid2 & (ape_phdrs_end >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_phdrs_end << 25)) - (ape_uuid2 & (ape_phdrs_end << 25))); ape_uuid2 = ((ape_uuid2 | (ape_phdrs_end >> 27)) - (ape_uuid2 & (ape_phdrs_end >> 27))); ape_uuid2 = (ape_uuid2 + (ape_phdrs_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_phdrs_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_phdrs_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_phdrs_end >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ape_uuid1 = ((ape_uuid1 | (WinMain >> 12)) - (ape_uuid1 & (WinMain >> 12))); ape_uuid1 = ((ape_uuid1 | (WinMain << 25)) - (ape_uuid1 & (WinMain << 25))); ape_uuid1 = ((ape_uuid1 | (WinMain >> 27)) - (ape_uuid1 & (WinMain >> 27))); ape_uuid1 = (ape_uuid1 + (WinMain >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (WinMain >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (WinMain >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (WinMain >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (WinMain >> 12)) - (ape_uuid2 & (WinMain >> 12))); ape_uuid2 = ((ape_uuid2 | (WinMain << 25)) - (ape_uuid2 & (WinMain << 25))); ape_uuid2 = ((ape_uuid2 | (WinMain >> 27)) - (ape_uuid2 & (WinMain >> 27))); ape_uuid2 = (ape_uuid2 + (WinMain >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (WinMain >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (WinMain >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (WinMain >> 030) & 0xFF) * 0x9e3779b9925d4c17;
+ASSERT(DEFINED(ape_mz) ? ape_mz == 0x400000 : 1, "linker panic");
+ASSERT((DEFINED(__init_bss_end) ? __init_bss_end : 0) % 8 == 0,
+       "__init_bss misalign");
+ASSERT(((DEFINED(__init_rodata_end) ? __init_rodata_end : 0) %
+        8 == 0),
+       "__init_rodata misalign");
+ASSERT((!DEFINED(ape_grub) ? 1 : ((ape_grub) - (0x400000)) < 8192),
+       "grub stub needs to be in first 8kb of image");
+ASSERT(DEFINED(_start) || DEFINED(_start16),
+       "please link a _start() or _start16() entrypoint");
+ASSERT(!DEFINED(_start16) || ((_end) - (0x400000 - 0x2000)) < 65536,
+       "ape won't support non-tiny real mode programs");
diff --git a/ape/ape.o b/ape/ape.o
new file mode 100644
index 0000000..db8e9d0
--- /dev/null
+++ b/ape/ape.o
Binary files differdiff --git a/ape/cosmopolitan.a b/ape/cosmopolitan.a
new file mode 100644
index 0000000..c8b1fb8
--- /dev/null
+++ b/ape/cosmopolitan.a
Binary files differdiff --git a/ape/cosmopolitan.h b/ape/cosmopolitan.h
new file mode 100644
index 0000000..4b509ed
--- /dev/null
+++ b/ape/cosmopolitan.h
@@ -0,0 +1,31063 @@
+#ifndef COSMOPOLITAN_H_
+#define COSMOPOLITAN_H_
+
+
+/*!BEGIN libc/integral/normalize.inc */
+
+#define __COSMOPOLITAN__ 1
+
+#ifndef __COUNTER__
+#define __COUNTER__ __LINE__
+#endif
+
+#if __GNUC__ + 0 < 2
+#undef __GNUC__
+#elif defined(__GNUC__) && defined(SWIG) /* lool */
+#undef __GNUC__
+#elif defined(__GNUC__) && defined(__NVCC__) /* lool */
+#undef __GNUC__
+#elif !defined(__GNUC__) && defined(__APPLE__) /* modesty */
+#define __GNUC__            4
+#define __GNUC_MINOR__      2
+#define __GNUC_PATCHLEVEL__ 1
+#elif !defined(__GNUC__) && defined(__TINYC__)
+#define __GNUC__            2
+#define __GNUC_MINOR__      0
+#define __GNUC_PATCHLEVEL__ 0
+#endif
+
+#if !defined(__x86_64__) && \
+    (defined(__amd64__) || (defined(_M_AMD64) && defined(_M_X64)))
+#define __x86_64__ 1
+#elif !defined(__i386__) && ((defined(__i486__) || defined(__i586__) ||  \
+                              defined(__i686__) || defined(__i786__)) || \
+                             _M_IX86 + 0 >= 400)
+#define __i386__ 1
+#elif !defined(__ia16__) && (defined(__MSDOS__) || defined(__BCC__))
+#define __ia16__ 1
+#endif
+#if __ia16__ + __i386__ + __x86_64__ + 0
+#define __x86__ 1
+#endif
+
+#ifdef _MSC_VER
+#define __STRICT_ANSI__
+#ifndef __STDC__
+#define __STDC__
+#endif
+#endif
+
+#ifndef __has_attribute
+#define __has_attribute(x) 0
+#endif
+#ifndef __has_builtin
+#define __has_builtin(x) 0
+#endif
+#ifndef __has_cpp_attribute
+#define __has_cpp_attribute(x) 0
+#endif
+
+#ifdef unix
+#undef unix
+#endif
+
+#ifdef linux
+#undef linux
+#endif
+
+#ifndef __BIGGEST_ALIGNMENT__
+#define __BIGGEST_ALIGNMENT__ 16
+#endif
+
+#define BIGPAGESIZE 0x200000
+#define STACKSIZE   0x100000
+#define FRAMESIZE   0x10000 /* 8086 */
+#define PAGESIZE    0x1000  /* i386+ */
+#define BUFSIZ      0x1000  /* best stdio default */
+#define CACHELINE   0x40    /* nexgen32e */
+#define CHAR_BIT    8       /* b/c von neumann */
+#define ARG_MAX     0x8000  /* b/c windows */
+#define PATH_MAX    248     /* b/c win32 apis limit ~248..260 */
+#define NAME_MAX    63      /* b/c dns */
+#define CHILD_MAX   25      /* only if malloc isn't linked */
+#define OPEN_MAX    16      /* only if malloc isn't linked */
+#define ATEXIT_MAX  32      /* only if malloc isn't linked */
+#define NSIG        128     /* it's complicated */
+
+#if defined(__LP64__) && !defined(__INT64_TYPE__)
+
+
+/*!BEGIN libc/integral/lp64.inc */
+
+#define __INT8_MAX__    0x7f
+#define __UINT8_MAX__   0xff
+#define __INT16_MAX__   0x7fff
+#define __UINT16_MAX__  0xffff
+#define __SHRT_MAX__    0x7fff
+#define __INT_MAX__     0x7fffffff
+#define __INT32_MAX__   0x7fffffff
+#define __UINT32_MAX__  0xffffffffu
+#define __INT64_MAX__   0x7fffffffffffffffl
+#define __UINT64_MAX__  0xfffffffffffffffful
+#define __SIZE_MAX__    0xfffffffffffffffful
+#define __INTPTR_MAX__  0x7fffffffffffffffl
+#define __UINTPTR_MAX__ 0xfffffffffffffffful
+#define __WINT_MAX__    0xffffffffu
+
+#define __SIZEOF_SHORT__       2
+#define __SIZEOF_INT__         4
+#define __SIZEOF_LONG__        8
+#define __SIZEOF_LONG_LONG__   8
+#define __SIZEOF_POINTER__     8
+#define __SIZEOF_PTRDIFF_T__   8
+#define __SIZEOF_SIZE_T__      8
+#define __SIZEOF_WCHAR_T__     4
+#define __SIZEOF_WINT_T__      4
+#define __SIZEOF_FLOAT__       4
+#define __SIZEOF_FLOAT128__    16
+#define __SIZEOF_DOUBLE__      8
+#define __SIZEOF_FLOAT80__     16
+#define __SIZEOF_LONG_DOUBLE__ 16
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define __INT8_TYPE__    signed char
+#define __UINT8_TYPE__   unsigned char
+#define __INT16_TYPE__   short int
+#define __UINT16_TYPE__  short unsigned int
+#define __INT32_TYPE__   int
+#define __UINT32_TYPE__  unsigned int
+#define __INT64_TYPE__   long int
+#define __UINT64_TYPE__  long unsigned int
+#define __INTPTR_TYPE__  long int
+#define __UINTPTR_TYPE__ long unsigned int
+#define __PTRDIFF_TYPE__ long int
+#define __SIZE_TYPE__    long unsigned int
+#define __WCHAR_TYPE__   int
+#define __CHAR16_TYPE__  short unsigned int
+#define __CHAR32_TYPE__  unsigned int
+#define __WINT_TYPE__    unsigned int
+
+#define __INT_LEAST8_TYPE__   __INT8_TYPE__
+#define __UINT_LEAST8_TYPE__  __UINT8_TYPE__
+#define __INT_LEAST16_TYPE__  __INT32_TYPE__
+#define __UINT_LEAST16_TYPE__ __UINT16_TYPE__
+#define __INT_LEAST32_TYPE__  __INT16_TYPE__
+#define __UINT_LEAST32_TYPE__ __UINT32_TYPE__
+#define __INT_LEAST64_TYPE__  __INT64_TYPE__
+#define __UINT_LEAST64_TYPE__ __UINT64_TYPE__
+#define __INT_FAST8_TYPE__    __INT8_TYPE__
+#define __UINT_FAST8_TYPE__   __UINT8_TYPE__
+#define __INT_FAST16_TYPE__   __INT32_TYPE__
+#define __UINT_FAST16_TYPE__  __UINT32_TYPE__
+#define __INT_FAST32_TYPE__   __INT32_TYPE__
+#define __UINT_FAST32_TYPE__  __UINT32_TYPE__
+#define __INT_FAST64_TYPE__   __INT64_TYPE__
+#define __UINT_FAST64_TYPE__  __UINT64_TYPE__
+
+#endif
+#elif defined(_MSC_VER) && !defined(__INT64_TYPE__)
+
+
+/*!BEGIN libc/integral/llp64.inc */
+
+#define __INT8_MAX__    0x7f
+#define __UINT8_MAX__   0xff
+#define __INT16_MAX__   0x7fff
+#define __UINT16_MAX__  0xffff
+#define __SHRT_MAX__    0x7fff
+#define __INT_MAX__     0x7fffffff
+#define __INT32_MAX__   0x7fffffff
+#define __UINT32_MAX__  0xffffffffu
+#define __INT64_MAX__   0x7fffffffffffffffl
+#define __UINT64_MAX__  0xffffffffffffffffull
+#define __SIZE_MAX__    0xffffffffffffffffull
+#define __INTPTR_MAX__  0x7fffffffffffffffll
+#define __UINTPTR_MAX__ 0xffffffffffffffffull
+#define __WINT_MAX__    0xffffffffu
+
+#define __SIZEOF_SHORT__       2
+#define __SIZEOF_INT__         4
+#define __SIZEOF_LONG__        4
+#define __SIZEOF_LONG_LONG__   8
+#define __SIZEOF_POINTER__     8
+#define __SIZEOF_PTRDIFF_T__   8
+#define __SIZEOF_SIZE_T__      4
+#define __SIZEOF_WCHAR_T__     4
+#define __SIZEOF_WINT_T__      4
+#define __SIZEOF_FLOAT__       4
+#define __SIZEOF_FLOAT128__    16
+#define __SIZEOF_DOUBLE__      8
+#define __SIZEOF_FLOAT80__     16
+#define __SIZEOF_LONG_DOUBLE__ 16
+
+#define __INT8_C(c)   c
+#define __UINT8_C(c)  c
+#define __INT16_C(c)  c
+#define __UINT16_C(c) c
+#define __INT32_C(c)  c
+#define __UINT32_C(c) c##U
+#define __INT64_C(c)  c##LL
+#define __UINT64_C(c) c##ULL
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define __INT8_TYPE__    signed char
+#define __UINT8_TYPE__   unsigned char
+#define __INT16_TYPE__   short int
+#define __UINT16_TYPE__  short unsigned int
+#define __INT32_TYPE__   int
+#define __UINT32_TYPE__  unsigned int
+#define __INT64_TYPE__   long long int
+#define __UINT64_TYPE__  long long unsigned int
+#define __INTPTR_TYPE__  long long int
+#define __UINTPTR_TYPE__ long long unsigned int
+#define __PTRDIFF_TYPE__ long long int
+#define __SIZE_TYPE__    unsigned int
+#define __WCHAR_TYPE__   int
+#define __CHAR16_TYPE__  short unsigned int
+#define __CHAR32_TYPE__  unsigned int
+#define __WINT_TYPE__    unsigned int
+
+#define __INT_LEAST8_TYPE__   __INT8_TYPE__
+#define __UINT_LEAST8_TYPE__  __UINT8_TYPE__
+#define __INT_LEAST16_TYPE__  __INT32_TYPE__
+#define __UINT_LEAST16_TYPE__ __UINT16_TYPE__
+#define __INT_LEAST32_TYPE__  __INT16_TYPE__
+#define __UINT_LEAST32_TYPE__ __UINT32_TYPE__
+#define __INT_LEAST64_TYPE__  __INT64_TYPE__
+#define __UINT_LEAST64_TYPE__ __UINT64_TYPE__
+#define __INT_FAST8_TYPE__    __INT8_TYPE__
+#define __UINT_FAST8_TYPE__   __UINT8_TYPE__
+#define __INT_FAST16_TYPE__   __INT32_TYPE__
+#define __UINT_FAST16_TYPE__  __UINT32_TYPE__
+#define __INT_FAST32_TYPE__   __INT32_TYPE__
+#define __UINT_FAST32_TYPE__  __UINT32_TYPE__
+#define __INT_FAST64_TYPE__   __INT64_TYPE__
+#define __UINT_FAST64_TYPE__  __UINT64_TYPE__
+
+#endif
+#endif
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+#ifdef __STDC__
+
+
+/*!BEGIN libc/integral/c.inc */
+
+#if __GNUC__ + 0 < 2
+#define __attribute__(x)
+#endif
+
+#ifndef __cplusplus
+#define COSMOPOLITAN_C_START_
+#define COSMOPOLITAN_C_END_
+#define COSMOPOLITAN_CXX_START_
+#define COSMOPOLITAN_CXX_END_
+#define COSMOPOLITAN_CXX_USING_
+#endif
+
+#ifndef __ia16__
+#define __far
+#endif
+
+#if !defined(__GNUC__) && __cplusplus + 0 >= 201103L
+#define typeof(x) decltype(x)
+#elif (defined(__STRICT_ANSI__) || !defined(__GNUC__)) && \
+    __STDC_VERSION__ + 0 < 201112
+#define typeof(x) __typeof(x)
+#endif
+
+#ifdef __cplusplus
+#if __cplusplus >= 201103L
+#define _Alignof(x) alignof(x)
+#endif /* C++11 */
+#else  /* __cplusplus */
+#define alignof(x) _Alignof(x)
+#if __STDC_VERSION__ + 0 < 201112
+#if __GNUC__ + _MSC_VER + 0 && !defined(__STRICT_ANSI__)
+#define _Alignof(x) __alignof(x)
+#else
+#define _Alignof(x) /* basically all it ever did lool */ sizeof(x)
+#endif /* GNU/MSVC/!ANSI */
+#endif /* C11 */
+#endif /* __cplusplus */
+
+#if !defined(__cplusplus) && !defined(inline) && __STDC_VERSION__ + 0 < 199901
+#if !defined(__STRICT_ANSI__) && (defined(__GNUC__) || defined(_MSC_VER))
+#define inline __inline
+#else
+#define inline
+#define __inline
+#endif
+#endif
+
+#if __STDC_VERSION__ + 0 < 201112
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define _Alignas(x) __attribute__((__aligned__(x)))
+#elif defined(_MSC_VER)
+#define _Alignas(x) __declspec(align(x))
+#endif
+#endif
+
+#if defined(__STRICT_ANSI__) || \
+    (!defined(__GNUC__) && !__has_builtin(unreachable))
+#define __builtin_unreachable() \
+  for (;;) {                    \
+  }
+#endif
+
+#if defined(__STRICT_ANSI__) || (!defined(__llvm__) && !__has_builtin(assume))
+#define __builtin_assume(x)            \
+  do {                                 \
+    if (!(x)) __builtin_unreachable(); \
+  } while (0)
+#endif
+
+#if __STDC_VERSION__ + 0 < 201112 && defined(__x86__)
+#define _Atomic(TYPE) TYPE
+#endif
+
+#ifdef __llvm__
+#define __gnu_printf__ __printf__
+#define __gnu_scanf__  __scanf__
+#endif
+
+#if __cplusplus + 0 >= 201103L
+#define NULL nullptr
+#elif !defined(__cplusplus)
+#define NULL ((void *)0)
+#else
+#define NULL 0
+#endif
+
+#ifndef __cplusplus
+#if __STDC_VERSION__ + 0 >= 201112
+typedef _Bool bool;
+#define true ((bool)+1)
+#define false ((bool)+0)
+#else
+#define bool int
+#define true 1
+#define false 0
+#endif
+#endif
+
+#ifndef __cplusplus
+typedef __WCHAR_TYPE__ wchar_t;
+typedef __CHAR16_TYPE__ char16_t;
+typedef __CHAR32_TYPE__ char32_t;
+#endif
+
+typedef int errno_t;
+typedef __SIZE_TYPE__ size_t;
+typedef __PTRDIFF_TYPE__ ssize_t;
+typedef __INTPTR_TYPE__ intptr_t;
+typedef __UINTPTR_TYPE__ uintptr_t;
+typedef __PTRDIFF_TYPE__ ptrdiff_t;
+typedef __WINT_TYPE__ wint_t; /* uint32_t on linux but int32_t on xnu */
+typedef __INT32_TYPE__ bool32;
+typedef __INT8_TYPE__ int8_t;
+typedef __UINT8_TYPE__ uint8_t;
+typedef __INT16_TYPE__ int16_t;
+typedef __UINT16_TYPE__ uint16_t;
+typedef __INT32_TYPE__ int32_t;
+typedef __UINT32_TYPE__ uint32_t;
+typedef __INT64_TYPE__ int64_t;
+typedef __UINT64_TYPE__ uint64_t;
+
+typedef struct {
+  intptr_t ax, dx;
+} axdx_t;
+
+#ifdef __SIZEOF_INTMAX__
+#undef __SIZEOF_INTMAX__
+#endif
+#if !defined(__STRICT_ANSI__) && __SIZEOF_POINTER__ == 8 && \
+    ((__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 406 || defined(__llvm__))
+#define __SIZEOF_INTMAX__ 16
+#else
+#define __SIZEOF_INTMAX__ __SIZEOF_POINTER__
+#endif
+#if __SIZEOF_INTMAX__ == 16
+typedef signed __int128 int128_t;
+typedef unsigned __int128 uint128_t;
+typedef int128_t intmax_t;
+typedef uint128_t uintmax_t;
+#elif __SIZEOF_INTMAX__ == 8
+typedef int64_t intmax_t;
+typedef uint64_t uintmax_t;
+#endif
+
+#ifndef __chibicc__
+#define va_list            __builtin_va_list
+#define va_arg(ap, type)   __builtin_va_arg(ap, type)
+#define va_copy(dest, src) __builtin_va_copy(dest, src)
+#define va_end(ap)         __builtin_va_end(ap)
+#define va_start(ap, last) __builtin_va_start(ap, last)
+#else
+
+
+/*!BEGIN libc/integral/lp64arg.inc */
+
+
+
+/*!BEGIN libc/runtime/valist.h */
+
+#define COSMOPOLITAN_LIBC_RUNTIME_VALIST_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct __va_list {
+  uint32_t gp_offset;
+  uint32_t fp_offset;
+  void *overflow_arg_area;
+  void *reg_save_area;
+};
+
+void *__va_arg(struct __va_list *, size_t, unsigned, unsigned);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define __GNUC_VA_LIST 1
+#define __gnuc_va_list va_list
+
+#define va_end(AP)
+#define va_copy(DST, SRC) ((DST)[0] = (SRC)[0])
+#define va_start(AP, LAST)                    \
+  do {                                        \
+    *(AP) = *(struct __va_list *)__va_area__; \
+  } while (0)
+
+#define va_arg(AP, TYPE)                               \
+  (*(TYPE *)__va_arg(AP, sizeof(TYPE), _Alignof(TYPE), \
+                     __builtin_reg_class(TYPE)))
+
+typedef struct __va_list va_list[1];
+#endif
+
+#define libcesque   nothrow nocallback
+#define memcpyesque libcesque
+#define strlenesque libcesque nosideeffect paramsnonnull()
+#define vallocesque \
+  libcesque nodiscard returnsaligned((PAGESIZE)) returnspointerwithnoaliases
+#define reallocesque libcesque returnsaligned((__BIGGEST_ALIGNMENT__))
+#define mallocesque  reallocesque returnspointerwithnoaliases
+#define interruptfn  nocallersavedregisters forcealignargpointer
+
+#ifndef pureconst
+#ifndef __STRICT_ANSI__
+#define pureconst __attribute__((__const__))
+#else
+#define pureconst
+#endif
+#endif
+
+#ifndef forcealign
+#ifndef __STRICT_ANSI__
+#define forcealign(bytes) __attribute__((__aligned__(bytes)))
+#else
+#define forcealign(bytes)
+#endif
+#endif
+
+#ifndef __STRICT_ANSI__
+#define thatispacked __attribute__((__packed__))
+#else
+#define thatispacked
+#endif
+
+#ifndef __STRICT_ANSI__
+#define printfesque(n)   __attribute__((__format__(__gnu_printf__, n, n + 1)))
+#define scanfesque(n)    __attribute__((__format__(__gnu_scanf__, n, n + 1)))
+#define strftimeesque(n) __attribute__((__format__(__strftime__, n, 0)))
+#else
+#define printfesque(n)
+#define scanfesque(n)
+#define strftimeesque(n)
+#endif
+
+#ifndef hidden
+#if !defined(__STRICT_ANSI__) && \
+    (__has_attribute(__visibility__) || defined(__GNUC__)) && !defined(_WIN32)
+#define hidden __attribute__((__visibility__("hidden")))
+#else
+#define hidden
+#endif
+#endif
+
+#ifndef privileged
+#if !defined(__STRICT_ANSI__) && \
+    (__has_attribute(__visibility__) || defined(__GNUC__))
+#define privileged _Section(".privileged") noinstrument
+#else
+#define privileged _Section(".privileged") noinstrument
+#endif
+#endif
+
+#ifndef noinstrument
+#if !defined(__STRICT_ANSI__) &&                    \
+    (__has_attribute(__no_instrument_function__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 204)
+#define noinstrument __attribute__((__no_instrument_function__))
+#else
+#define noinstrument
+#endif
+#endif
+
+#ifndef wontreturn
+#if !defined(__STRICT_ANSI__) &&      \
+    (__has_attribute(__noreturn__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 208)
+#define wontreturn __attribute__((__noreturn__))
+#else
+#define wontreturn
+#endif
+#endif
+
+#ifndef nosideeffect
+#if !defined(__STRICT_ANSI__) &&  \
+    (__has_attribute(__pure__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 296)
+#define nosideeffect __attribute__((__pure__))
+#else
+#define nosideeffect
+#endif
+#endif
+
+#ifndef noinline
+#if !defined(__STRICT_ANSI__) &&      \
+    (__has_attribute(__noinline__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 301)
+#define noinline __attribute__((__noinline__))
+#else
+#define noinline
+#endif
+#endif
+
+#ifndef noclone
+#if !defined(__STRICT_ANSI__) &&     \
+    (__has_attribute(__noclone__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 405)
+#define noclone __attribute__((__noclone__))
+#else
+#define noclone
+#endif
+#endif
+
+#ifndef forceinline
+#ifdef __cplusplus
+#define forceinline inline
+#else
+#if !defined(__STRICT_ANSI__) && \
+    (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 302
+#if (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 403 || \
+    !defined(__cplusplus) ||                              \
+    (defined(__clang__) &&                                \
+     (defined(__GNUC_STDC_INLINE__) || defined(__GNUC_GNU_INLINE__)))
+#if defined(__GNUC_STDC_INLINE__) || defined(__cplusplus)
+#define forceinline                                                 \
+  static __inline __attribute__((__always_inline__, __gnu_inline__, \
+                                 __no_instrument_function__, __unused__))
+#else
+#define forceinline              \
+  static __inline __attribute__( \
+      (__always_inline__, __no_instrument_function__, __unused__))
+#endif /* __GNUC_STDC_INLINE__ */
+#endif /* GCC >= 4.3 */
+#elif defined(_MSC_VER)
+#define forceinline __forceinline
+#else
+#define forceinline static inline
+#endif /* !ANSI && GCC >= 3.2 */
+#endif /* __cplusplus */
+#endif /* forceinline */
+
+#ifndef mayalias
+#if !defined(__STRICT_ANSI__) &&       \
+    (__has_attribute(__may_alias__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 303)
+#define mayalias __attribute__((__may_alias__))
+#else
+#define mayalias
+#endif
+#endif
+
+#ifndef nodiscard
+#if !defined(__STRICT_ANSI__) &&                           \
+    ((__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 304 || \
+     __has_attribute(__warn_unused_result__))
+#define nodiscard __attribute__((__warn_unused_result__))
+#else
+#define nodiscard
+#endif
+#endif
+
+#ifndef nullterminated
+#if !defined(__STRICT_ANSI__) && \
+    (__has_attribute(__sentinel__) || __GNUC__ + 0 >= 4)
+#define nullterminated(x) __attribute__((__sentinel__ x))
+#else
+#define nullterminated(x)
+#endif
+#endif
+
+#ifndef flattenout
+#if __has_attribute(__flatten__) || \
+    ((__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 401 && !defined(__llvm__))
+#define flattenout __attribute__((__flatten__))
+#else
+#define flattenout
+#endif
+#endif
+
+#ifndef externinline
+#if !defined(__STRICT_ANSI__) &&                           \
+    (!defined(__cplusplus) ||                              \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 403 || \
+     (defined(__clang__) &&                                \
+      (defined(__GNUC_STDC_INLINE__) || defined(__GNUC_GNU_INLINE__))))
+#if defined(__GNUC_STDC_INLINE__) || defined(__cplusplus)
+#define externinline extern __inline __attribute__((__gnu_inline__))
+#else
+#define externinline extern __inline __attribute__((__always_inline__))
+#endif
+#else
+#define externinline inline
+#endif
+#endif
+
+#ifndef relegated
+#if !defined(__STRICT_ANSI__) &&  \
+    (__has_attribute(__cold__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 403)
+#define relegated __attribute__((__cold__))
+#else
+#define relegated
+#endif
+#endif
+
+#if !defined(__STRICT_ANSI__) &&     \
+    (__has_attribute(__warning__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 403)
+#define warnifused(s) __attribute__((__warning__(s)))
+#else
+#define warnifused(s)
+#endif
+
+#ifndef firstclass
+#if !defined(__STRICT_ANSI__) && \
+    (__has_attribute(__hot__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 403)
+#define firstclass __attribute__((__hot__))
+#else
+#define firstclass
+#endif
+#endif
+
+#ifndef paramsnonnull
+#if !defined(__STRICT_ANSI__) &&     \
+    (__has_attribute(__nonnull__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 403)
+#define paramsnonnull(opt_1idxs) __attribute__((__nonnull__ opt_1idxs))
+#else
+#define paramsnonnull(opt_1idxs)
+#endif
+#endif
+
+#if __STDC_VERSION__ + 0 >= 199901L
+#define hasatleast static
+#else
+#define hasatleast
+#endif
+
+#if __STDC_VERSION__ + 0 < 199901L && !defined(restrict)
+#if !defined(__STRICT_ANSI__) && !defined(__cplusplus) && \
+    ((__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 301 || defined(_MSC_VER))
+#define restrict __restrict__
+#else
+#define restrict
+#define __restrict
+#endif
+#endif
+
+#ifndef nocallback
+#if !defined(__STRICT_ANSI__) &&  \
+    (__has_attribute(__leaf__) || \
+     (!defined(__llvm__) &&       \
+      (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 406))
+#define nocallback __attribute__((__leaf__))
+#else
+#define nocallback
+#endif
+#endif
+
+#ifndef nothrow
+#if defined(__cplusplus) && !defined(__STRICT_ANSI__) && \
+    (__has_attribute(nothrow) ||                         \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 303)
+#define nothrow __attribute__((__nothrow__))
+#elif defined(_MSC_VER)
+#define nothrow __declspec(nothrow)
+#else
+#define nothrow
+#endif
+#endif
+
+#ifndef nooptimize
+#ifndef __STRICT_ANSI__
+#if (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 407 || \
+    __has_attribute(__optimize__)
+#define nooptimize __attribute__((__optimize__(1)))
+#elif defined(__llvm__) || __has_attribute(__optnone__)
+#define nooptimize __attribute__((__optnone__))
+#endif
+#else
+#define nooptimize
+#endif
+#endif
+
+#ifndef optimizesize
+#ifndef __STRICT_ANSI__
+#if (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 407 || \
+    __has_attribute(__optimize__)
+#define optimizesize __attribute__((__optimize__("s")))
+#elif defined(__llvm__) || __has_attribute(__optnone__)
+#define optimizesize __attribute__((__optnone__))
+#endif
+#else
+#define optimizesize
+#endif
+#endif
+
+#ifndef optimizespeed
+#if !defined(__STRICT_ANSI__) &&                           \
+    ((__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 407 || \
+     __has_attribute(__optimize__))
+#define optimizespeed __attribute__((__optimize__(3)))
+#else
+#define optimizespeed
+#endif
+#endif
+
+#ifndef returnstwice
+#if !defined(__STRICT_ANSI__) &&           \
+    (__has_attribute(__returns_twice__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 402)
+#define returnstwice __attribute__((__returns_twice__))
+#else
+#define returnstwice
+#endif
+#endif
+
+#ifndef nodebuginfo
+#if !defined(__STRICT_ANSI__) && \
+    (__has_attribute(__nodebug__) || defined(__llvm__))
+#define nodebuginfo __attribute__((__nodebug__))
+#else
+#define nodebuginfo
+#endif
+#endif
+
+#ifndef artificial
+#if !defined(__STRICT_ANSI__) &&        \
+    (__has_attribute(__artificial__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 403)
+#define artificial __attribute__((__artificial__))
+#else
+#define artificial
+#endif
+#endif
+
+#ifndef microarchitecture
+#if !defined(__STRICT_ANSI__) &&    \
+    (__has_attribute(__target__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 404)
+#define microarchitecture(march) __attribute__((__target__(march)))
+#else
+#define microarchitecture(march)
+#endif
+#endif
+
+#ifndef targetclones
+#if !defined(__STRICT_ANSI__) && \
+    (__has_attribute(__target_clones__) || __GNUC__ >= 6)
+#define targetclones(archs) __attribute__((__target_clones__(archs)))
+#else
+#define targetclones(archs)
+#endif
+#endif
+
+#if (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 408 || \
+    __has_attribute(__force_align_arg_pointer__)
+#define forcealignargpointer __attribute__((__force_align_arg_pointer__))
+#else
+#define forcealignargpointer "need modern compiler"
+#endif
+
+#ifndef returnsnonnull
+#if !defined(__STRICT_ANSI__) &&             \
+    (__has_attribute(__returns_nonnull__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 409)
+#define returnsnonnull __attribute__((__returns_nonnull__))
+#else
+#define returnsnonnull
+#endif
+#endif
+
+#if !defined(__STRICT_ANSI__) &&            \
+    (__has_attribute(__assume_aligned__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 409)
+#define returnsaligned(x) __attribute__((__assume_aligned__ x))
+#else
+#define returnsaligned(x)
+#endif
+
+#ifndef returnspointerwithnoaliases
+#if !defined(__STRICT_ANSI__) &&    \
+    (__has_attribute(__malloc__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 409)
+#define returnspointerwithnoaliases __attribute__((__malloc__))
+#elif defined(_MSC_VER)
+#define returnspointerwithnoaliases __declspec(allocator)
+#else
+#define returnspointerwithnoaliases
+#endif
+#endif
+
+#ifndef attributeallocsize
+#if !defined(__STRICT_ANSI__) &&        \
+    (__has_attribute(__alloc_size__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 409)
+#define attributeallocsize(x) __attribute__((__alloc_size__ x))
+#else
+#define attributeallocsize(x)
+#endif
+#endif
+
+#ifndef attributeallocalign
+#if !defined(__STRICT_ANSI__) &&         \
+    (__has_attribute(__alloc_align__) || \
+     (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 409)
+#define attributeallocalign(x) __attribute__((__alloc_align__ x))
+#else
+#define attributeallocalign(x)
+#endif
+#endif
+
+#if __cplusplus + 0 >= 201103L
+#define autotype(x) auto
+#elif ((__has_builtin(auto_type) || defined(__llvm__) ||       \
+        (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 409) && \
+       !defined(__chibicc__))
+#define autotype(x) __auto_type
+#else
+#define autotype(x) typeof(x)
+#endif
+
+#if __GNUC__ >= 7 || __has_attribute(__no_caller_saved_registers__)
+#define nocallersavedregisters __attribute__((__no_caller_saved_registers__))
+#else
+#define nocallersavedregisters "need modern compiler"
+#endif
+
+#if (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 408 || \
+    __has_attribute(__no_sanitize_address__)
+#define noasan __attribute__((__no_sanitize_address__))
+#else
+#define noasan
+#endif
+
+#ifndef unreachable
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define unreachable __builtin_unreachable()
+#else
+#define unreachable \
+  do {              \
+  } while (1)
+#endif
+#endif
+
+#define donothing \
+  do {            \
+  } while (0)
+
+#ifndef __STRICT_ANSI__
+#define testonly    noinline _Section(".test")
+#define textstartup _Section(".text.startup") noinstrument
+#define textexit    _Section(".text.exit") noinstrument
+#define textreal    _Section(".text.real")
+#define texthead    _Section(".text.head")
+#define textwindows _Section(".text.windows")
+#define antiquity   _Section(".text.antiquity")
+#else
+#define testonly
+#define textstartup
+#define textexit
+#define textreal
+#define texthead
+#define textwindows
+#define antiquity
+#endif
+
+#ifndef compatfn
+#define compatfn
+#endif
+
+#ifndef frownedupon
+#define frownedupon(alternative)
+#endif
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define _Vector_size(k) __attribute__((__vector_size__(k)))
+#else
+#define _Vector_size(k) [k]
+#endif
+
+#if defined(__STRICT_ANSI__) || \
+    (!defined(__GNUC__) && !defined(__builtin_offsetof))
+#define offsetof(type, member) ((unsigned long)&((type *)0)->member)
+#else
+#define offsetof(type, member) __builtin_offsetof(type, member)
+#endif
+
+#ifndef _Section
+#if !defined(__STRICT_ANSI__) && !defined(__APPLE__)
+#define _Section(s) __attribute__((__section__(s)))
+#else
+#define _Section(s)
+#endif
+#endif
+
+#ifndef __llvm__
+#define initarray _Section(".init_array,\"a\",@init_array #")
+#else
+#define initarray _Section(".init_array")
+#endif
+
+#ifndef __STRICT_ANSI__
+#if defined(__GNUC__) || defined(__llvm__)
+#pragma GCC diagnostic ignored "-Wsign-compare" /* lint needs to change  */
+#pragma GCC diagnostic ignored "-Wtype-limits" /* makes macros unsafe  */
+#pragma GCC diagnostic ignored "-Woverflow" /* also breaks macros  */
+#pragma GCC diagnostic ignored "-Wformat" /* forces only gnu pf */
+#pragma GCC diagnostic ignored "-Wunused-parameter" /* extreme prejudice */
+#pragma GCC diagnostic ignored "-Wunused-function" /* contradicts dce! */
+#pragma GCC diagnostic ignored "-Wunused-variable" /* belongs in tidy */
+#pragma GCC diagnostic ignored "-Wformat-extra-args" /* is also broken */
+#pragma GCC diagnostic ignored "-Wparentheses" /* annoying tidy */
+#pragma GCC diagnostic ignored "-Wdangling-else" /* come on tidy */
+#pragma GCC diagnostic ignored "-Wformat-security" /* come on tidy */
+#pragma GCC diagnostic ignored "-Wunused-value" /* breaks macros */
+#ifndef __cplusplus
+#pragma GCC diagnostic ignored "-Wimplicit-int"
+#endif /* C++ */
+#endif /* GCC || LLVM */
+#if defined(__GNUC__) && !defined(__llvm__)
+/* why we need authorization to name a variable `yn' */
+#pragma GCC diagnostic ignored "-Wbuiltin-declaration-mismatch"
+#pragma GCC diagnostic ignored "-Wfree-nonheap-object" /* broken #54202 */
+#ifndef __cplusplus
+#if __GNUC__ >= 6
+#pragma GCC diagnostic ignored /* wut */ "-Wdiscarded-qualifiers"
+#pragma GCC diagnostic ignored /* tidy */ "-Wunused-but-set-variable"
+#pragma GCC diagnostic ignored /* tidy */ "-Wunused-but-set-parameter"
+#endif /* GCC6+ */
+#if __GNUC__ >= 8
+#pragma GCC diagnostic ignored "-Wstringop-truncation"
+#pragma GCC diagnostic ignored "-Wstringop-overflow" /* breaks strndup */
+#endif /* GCC8+ */
+#if __GNUC__ + 0 >= 9
+#pragma GCC diagnostic ignored /* "always true" breaks dce */ "-Waddress"
+#endif /* GCC9+ */
+#endif /* !C++ */
+#endif /* GCC && !LLVM */
+#ifdef __llvm__
+#pragma clang diagnostic ignored \
+    "-Wincompatible-pointer-types-discards-qualifiers"
+#pragma clang diagnostic ignored "-Wbuiltin-requires-header"
+#pragma clang diagnostic ignored "-Wparentheses-equality" /*-save-temps*/
+#pragma clang diagnostic ignored "-Wunused-value" /*({-save-temps})*/
+#pragma clang diagnostic ignored "-Wstring-plus-int" /* special ed */
+#pragma clang diagnostic ignored "-Wunused-value" /* extreme prejudice */
+#pragma clang diagnostic ignored "-Wbuiltin-requires-header"
+#pragma clang diagnostic ignored \
+    "-Wincompatible-pointer-types-discards-qualifiers"
+#endif /* !GCC && LLVM */
+#endif /* ANSI */
+
+#ifndef __W__
+#ifndef __STRICT_ANSI__
+#if defined(__GNUC__) || defined(__llvm__)
+#pragma GCC diagnostic error "-Wpointer-arith"
+#pragma GCC diagnostic error "-Wnonnull"
+#pragma GCC diagnostic error "-Wunused-result"
+#pragma GCC diagnostic error "-Wuninitialized"
+#pragma GCC diagnostic error "-Wstrict-aliasing"
+#pragma GCC diagnostic error "-Wshift-negative-value"
+#ifndef __cplusplus
+#pragma GCC diagnostic error "-Wimplicit-function-declaration"
+#if __GNUC__ >= 6
+#pragma GCC diagnostic error "-Wincompatible-pointer-types"
+#if __GNUC__ >= 8
+#pragma GCC diagnostic error "-Wmultistatement-macros"
+#pragma GCC diagnostic error "-Wpacked-not-aligned"
+#pragma GCC diagnostic error "-Wcast-align=strict"
+#pragma GCC diagnostic error "-Wif-not-aligned"
+#endif /* GCC 8+ */
+#endif /* GCC 6+ */
+#endif /* __cplusplus */
+#endif /* GCC || LLVM */
+#if defined(__GNUC__) && !defined(__llvm__)
+#pragma GCC diagnostic error "-Wwrite-strings"
+#pragma GCC diagnostic error "-Wtrampolines"
+#pragma GCC diagnostic error "-Wmaybe-uninitialized"
+#pragma GCC diagnostic error "-Wredundant-decls"
+#if __GNUC__ >= 6
+#pragma GCC diagnostic error "-Wnonnull-compare"
+#if defined(COSMO) && !defined(MODE_DBG) && !defined(STACK_FRAME_UNLIMITED)
+#pragma GCC diagnostic error "-Wframe-larger-than=4096"
+#if __GNUC__ >= 9
+#pragma GCC diagnostic error "-Walloca-larger-than=1024"
+#pragma GCC diagnostic error "-Wvla-larger-than=1024"
+#endif /* GCC 9+ */
+#endif /* STACK_FRAME_UNLIMITED */
+#elif __GNUC__ >= 9
+#pragma GCC diagnostic error /* e.g. fabs not abs */ "-Wabsolute-value"
+#endif /* GCC 6+ */
+#endif /* GCC && !LLVM */
+#ifdef __llvm__
+#pragma clang diagnostic error "-Wassume"
+#endif /* !GCC && LLVM */
+#endif /* ANSI */
+#endif /* -w */
+
+#ifndef __STRICT_ANSI__
+#define DebugBreak() asm("int3")
+#else
+#define DebugBreak() (void)0
+#endif
+
+#ifndef __STRICT_ANSI__
+#define VEIL(CONSTRAINT, EXPRESSION)                             \
+  ({                                                             \
+    autotype(EXPRESSION) VeiledValue = (EXPRESSION);             \
+    asm("" : "=" CONSTRAINT ""(VeiledValue) : "0"(VeiledValue)); \
+    VeiledValue;                                                 \
+  })
+#else
+#define VEIL(CONSTRAINT, EXPRESSION) (EXPRESSION)
+#endif
+
+#ifndef __STRICT_ANSI__
+#define CONCEAL(CONSTRAINT, EXPRESSION)                                   \
+  ({                                                                      \
+    autotype(EXPRESSION) VeiledValue = (EXPRESSION);                      \
+    asm volatile("" : "=" CONSTRAINT ""(VeiledValue) : "0"(VeiledValue)); \
+    VeiledValue;                                                          \
+  })
+#else
+#define CONCEAL(CONSTRAINT, EXPRESSION) (EXPRESSION)
+#endif
+
+#ifndef __STRICT_ANSI__
+#define EXPROPRIATE(EXPRESSION)                    \
+  ({                                               \
+    asm volatile("" ::"g"(EXPRESSION) : "memory"); \
+    0;                                             \
+  })
+#else
+#define EXPROPRIATE(EXPRESSION) (EXPRESSION)
+#endif
+
+#if !defined(__STRICT_ANSI__) && !defined(__APPLE__)
+#define YOINK(SYMBOL) \
+  asm(".section .yoink\n\tnopl\t%a0\n\t.previous" : : "X"(SYMBOL))
+#else
+#define YOINK(SYMBOL) (void)0
+#endif
+
+#if !defined(__STRICT_ANSI__) && !defined(__APPLE__)
+#define STATIC_YOINK(SYMBOLSTR) \
+  asm(".section .yoink\n\tnopl\t\"" SYMBOLSTR "\"\n\t.previous")
+#else
+#define STATIC_YOINK(SYMBOLSTR)
+#endif
+
+#if !defined(IM_FEELING_NAUGHTY)
+#define STATIC_YOINK_SOURCE(PATH) STATIC_YOINK(PATH)
+#else
+#define STATIC_YOINK_SOURCE(PATH)
+#endif
+
+#define MACHINE_CODE_ANALYSIS_BEGIN_
+#define MACHINE_CODE_ANALYSIS_END_
+#else
+#define const
+#define volatile
+#endif
+#ifdef __cplusplus
+
+
+/*!BEGIN libc/integral/cxx.inc */
+
+#define COSMOPOLITAN_CXX_START_ namespace cosmo {
+#define COSMOPOLITAN_CXX_END_   }
+#define COSMOPOLITAN_CXX_USING_ using namespace cosmo;
+#define COSMOPOLITAN_C_START_   extern "C" {
+#define COSMOPOLITAN_C_END_     }
+
+#if !defined(__builtin_types_compatible_p) && !__has_builtin(types_compatible_p)
+#if 0 /* todo jart whyyyy */
+
+
+/*!BEGIN libc/integral/cxxtypescompat.inc */
+
+#define NAME __cxx_types_compatible
+#define QUALIFIED(Q1, Q2)       \
+  template <class _T, class _U> \
+  struct NAME<_T Q1, _U Q2> : NAME<_T, _U> {}
+
+template <class, class>
+struct NAME {
+  enum { _value = 0 };
+};
+
+template <class _T>
+struct NAME<_T, _T> {
+  enum { _value = 1 };
+};
+
+template <class _T, size_t N>
+struct NAME<_T[], _T[N]> {
+  enum { _value = 1 };
+};
+
+template <class _T, size_t N>
+struct NAME<_T[N], _T[]> {
+  enum { _value = 1 };
+};
+
+QUALIFIED(const volatile, );
+QUALIFIED(const volatile, const);
+QUALIFIED(const, const volatile);
+QUALIFIED(volatile, const volatile);
+QUALIFIED(const volatile, volatile);
+QUALIFIED(const, volatile);
+QUALIFIED(volatile, const);
+QUALIFIED(, const);
+QUALIFIED(const, );
+QUALIFIED(, volatile);
+QUALIFIED(volatile, );
+
+#undef QUALIFIED
+#undef NAME
+#define __builtin_types_compatible_p(A, B) \
+  (__cxx_types_compatible<A, B>::_value)
+#else
+#define __builtin_types_compatible_p(A, B) 0
+#endif
+#endif
+
+#if !defined(__builtin_choose_expr) && !__has_builtin(choose_expr)
+#if 1
+template <bool _P, typename _T, typename _U>
+struct __cxx_choose_expr {
+  __cxx_choose_expr(_T _a, _U _b) : _value(_a) {}
+  const _T _value;
+};
+template <typename _T, typename _U>
+struct __cxx_choose_expr<false, _T, _U> {
+  __cxx_choose_expr(_T _a, _U _b) : _value(_b) {}
+  const _U _value;
+};
+#define __builtin_choose_expr(X, A, B) \
+  (__cxx_choose_expr<X, typeof(A), typeof(B)>(A, B)._value)
+#else
+#define __builtin_choose_expr(X, A, B) ((X) ? (A) : (B))
+#endif
+#endif
+#endif
+#endif
+
+
+/*!BEGIN libc/assert.h */
+
+#define COSMOPOLITAN_LIBC_ASSERT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void __assert_fail(const char *, const char *, int) hidden wontreturn relegated;
+
+#ifdef NDEBUG
+#define __ASSERT_FAIL(EXPR, FILE, LINE)
+#else
+#define __ASSERT_FAIL(EXPR, FILE, LINE) __assert_fail(EXPR, FILE, LINE)
+#endif
+
+#define assert(EXPR)                            \
+  do {                                          \
+    if (!(EXPR)) {                              \
+      __ASSERT_FAIL(#EXPR, __FILE__, __LINE__); \
+      unreachable;                              \
+    }                                           \
+  } while (0)
+
+#define static_assert _Static_assert
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/complex.h */
+
+#define COSMOPOLITAN_LIBC_COMPLEX_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+#if __STDC_VERSION__ + 0 >= 201112 && !defined(__STDC_NO_COMPLEX__)
+
+#define complex   _Complex
+#define imaginary _Imaginary
+
+double cabs(complex double);
+double carg(complex double);
+double cimag(complex double);
+double creal(complex double);
+
+float cabsf(complex float);
+float cargf(complex float);
+float cimagf(complex float);
+float crealf(complex float);
+
+long double cabsl(complex long double);
+long double cargl(complex long double);
+long double cimagl(complex long double);
+long double creall(complex long double);
+
+complex double cacos(complex double);
+complex double cacosh(complex double);
+complex double casin(complex double);
+complex double casinh(complex double);
+complex double catan(complex double);
+complex double catanh(complex double);
+complex double ccos(complex double);
+complex double ccosh(complex double);
+complex double cexp(complex double);
+complex double cexp2(complex double);
+complex double clog(complex double);
+complex double conj(complex double);
+complex double cpow(complex double, complex double);
+complex double cproj(complex double);
+complex double csin(complex double);
+complex double csinh(complex double);
+complex double csqrt(complex double);
+complex double ctan(complex double);
+complex double ctanh(complex double);
+
+complex float cacosf(complex float);
+complex float cacoshf(complex float);
+complex float casinf(complex float);
+complex float casinhf(complex float);
+complex float catanf(complex float);
+complex float catanhf(complex float);
+complex float ccosf(complex float);
+complex float ccoshf(complex float);
+complex float cexpf(complex float);
+complex float cexp2f(complex float);
+complex float clogf(complex float);
+complex float conjf(complex float);
+complex float cpowf(complex float, complex float);
+complex float cprojf(complex float);
+complex float csinf(complex float);
+complex float csinhf(complex float);
+complex float csqrtf(complex float);
+complex float ctanf(complex float);
+complex float ctanhf(complex float);
+
+complex long double cprojl(complex long double);
+complex long double csinhl(complex long double);
+complex long double csinl(complex long double);
+complex long double csqrtl(complex long double);
+complex long double ctanhl(complex long double);
+complex long double ctanl(complex long double);
+complex long double cacoshl(complex long double);
+complex long double cacosl(complex long double);
+complex long double casinhl(complex long double);
+complex long double casinl(complex long double);
+complex long double catanhl(complex long double);
+complex long double catanl(complex long double);
+complex long double ccoshl(complex long double);
+complex long double ccosl(complex long double);
+complex long double cexpl(complex long double);
+complex long double cexp2l(complex long double);
+complex long double clogl(complex long double);
+complex long double conjl(complex long double);
+complex long double cpowl(complex long double, complex long double);
+
+#endif /* C11 */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/dce.h */
+
+#define COSMOPOLITAN_LIBC_DCE_H_
+
+
+/*!BEGIN libc/nexgen32e/kcpuids.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_KCPUIDS_H_
+
+#define KCPUIDS_0H        0
+#define KCPUIDS_1H        1
+#define KCPUIDS_2H        2
+#define KCPUIDS_7H        3
+#define KCPUIDS_80000001H 4
+#define KCPUIDS_80000007H 5
+#define KCPUIDS_16H       6
+#define KCPUIDS_LEN       7
+#define KCPUIDS_6H        -1 /* TBD: Thermal and Power Management */
+#define KCPUIDS_DH        -1 /* TBD: Extended state features */
+#define KCPUIDS_80000008H -1 /* TBD: AMD Miscellaneous */
+#define KCPUIDS_8000000AH -1 /* TBD: AMD SVM */
+
+#define KCPUIDS_EAX 0
+#define KCPUIDS_EBX 1
+#define KCPUIDS_ECX 2
+#define KCPUIDS_EDX 3
+
+#define KCPUIDS(LEAF, REG) _KCPUIDS(LEAF, REG)
+#ifdef __ASSEMBLER__
+#define _KCPUIDS(LEAF, REG) KCPUIDS_##LEAF * 16 + KCPUIDS_##REG * 4
+#else
+#define _KCPUIDS(LEAF, REG) kCpuids[KCPUIDS_##LEAF][KCPUIDS_##REG]
+#endif
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const unsigned kCpuids[KCPUIDS_LEN][4];
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+/*─────────────────────────────────────────────────────────────────────────────╗
+│ cosmopolitan § autotune » dead code elimination                              │
+╚─────────────────────────────────────────────────────────────────────────────*/
+
+#ifndef SUPPORT_VECTOR
+/**
+ * Supported Platforms Tuning Knob (Runtime & Compile-Time)
+ * Tuning this bitmask will remove platform polyfills at compile-time.
+ */
+#define SUPPORT_VECTOR 255
+#endif
+
+#define LINUX   1
+#define METAL   2
+#define WINDOWS 4
+#define XNU     8
+#define OPENBSD 16
+#define FREEBSD 32
+#define NETBSD  64
+
+#ifdef NDEBUG
+#define NoDebug() 1
+#else
+#define NoDebug() 0
+#endif
+
+#ifdef MODE_DBG
+#define IsModeDbg() 1
+#else
+#define IsModeDbg() 0
+#endif
+
+#ifdef __MFENTRY__
+#define HaveFentry() 1
+#else
+#define HaveFentry() 0
+#endif
+
+#ifdef TRUSTWORTHY
+#define IsTrustworthy() 1
+#else
+#define IsTrustworthy() 0
+#endif
+
+#ifdef SECURITY_BLANKETS
+#define UseSecurityBlankets() 1
+#else
+#define UseSecurityBlankets() 0
+#endif
+
+#ifdef TINY
+#define IsTiny() 1
+#else
+#define IsTiny() 0
+#endif
+
+#ifdef __OPTIMIZE__
+#define IsOptimized() 1
+#else
+#define IsOptimized() 0
+#endif
+
+#if defined(__PIE__) || defined(__PIC__)
+#define IsPositionIndependent() 1
+#else
+#define IsPositionIndependent() 0
+#endif
+
+#define SupportsLinux()   ((SUPPORT_VECTOR & LINUX) == LINUX)
+#define SupportsMetal()   ((SUPPORT_VECTOR & METAL) == METAL)
+#define SupportsWindows() ((SUPPORT_VECTOR & WINDOWS) == WINDOWS)
+#define SupportsXnu()     ((SUPPORT_VECTOR & XNU) == XNU)
+#define SupportsFreebsd() ((SUPPORT_VECTOR & FREEBSD) == FREEBSD)
+#define SupportsOpenbsd() ((SUPPORT_VECTOR & OPENBSD) == OPENBSD)
+#define SupportsNetbsd()  ((SUPPORT_VECTOR & NETBSD) == NETBSD)
+#define SupportsBsd()     (!!(SUPPORT_VECTOR & (XNU | FREEBSD | OPENBSD | NETBSD)))
+#define SupportsSystemv() \
+  (!!(SUPPORT_VECTOR & (LINUX | XNU | OPENBSD | FREEBSD | NETBSD)))
+
+#ifndef __ASSEMBLER__
+#define IsLinux()   (SupportsLinux() && (__hostos & LINUX))
+#define IsMetal()   (SupportsMetal() && (__hostos & METAL))
+#define IsWindows() (SupportsWindows() && (__hostos & WINDOWS))
+#define IsXnu()     (SupportsXnu() && (__hostos & XNU))
+#define IsFreebsd() (SupportsFreebsd() && (__hostos & FREEBSD))
+#define IsOpenbsd() (SupportsOpenbsd() && (__hostos & OPENBSD))
+#define IsNetbsd()  (SupportsNetbsd() && (__hostos & NETBSD))
+#define IsBsd()     (IsXnu() || IsFreebsd() || IsOpenbsd() || IsNetbsd())
+#else
+/* clang-format off */
+#define IsLinux() $LINUX,__hostos(%rip)
+#define IsMetal() $METAL,__hostos(%rip)
+#define IsWindows() $WINDOWS,__hostos(%rip)
+#define IsBsd() $XNU|FREEBSD|OPENBSD|NETBSD,__hostos(%rip)
+#define IsXnu() $XNU,__hostos(%rip)
+#define IsFreebsd() $FREEBSD,__hostos(%rip)
+#define IsOpenbsd() $OPENBSD,__hostos(%rip)
+#define IsNetbsd() $NETBSD,__hostos(%rip)
+/* clang-format on */
+#endif
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const int __hostos;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/errno.h */
+
+#define COSMOPOLITAN_LIBC_ERRNO_H_
+
+/**
+ * @fileoverview System error codes.
+ * @see libc/sysv/consts.sh for numbers
+ */
+
+#define EPERM           EPERM            /* operation not permitted */
+#define ENOENT          ENOENT           /* no such file or directory */
+#define ESRCH           ESRCH            /* no such process */
+#define EINTR           EINTR            /* interrupted system call */
+#define EIO             EIO              /* input/output error */
+#define ENXIO           ENXIO            /* no such device or address */
+#define E2BIG           E2BIG            /* argument list too long */
+#define ENOEXEC         ENOEXEC          /* exec format error */
+#define EBADF           EBADF            /* bad file descriptor */
+#define ECHILD          ECHILD           /* no child processes */
+#define EAGAIN          EAGAIN           /* resource temporarily unavailable */
+#define ENOMEM          ENOMEM           /* not enough space */
+#define EACCES          EACCES           /* permission denied */
+#define EFAULT          EFAULT           /* bad address */
+#define ENOTBLK         ENOTBLK          /* block device required */
+#define EBUSY           EBUSY            /* device or resource busy */
+#define EEXIST          EEXIST           /* file exists */
+#define EXDEV           EXDEV            /* improper link */
+#define ENODEV          ENODEV           /* no such device */
+#define ENOTDIR         ENOTDIR          /* not a directory */
+#define EISDIR          EISDIR           /* is a directory */
+#define EINVAL          EINVAL           /* invalid argument */
+#define ENFILE          ENFILE           /* too many open files in system */
+#define EMFILE          EMFILE           /* too many open files */
+#define ENOTTY          ENOTTY           /* inappropriate I/O control op */
+#define ETXTBSY         ETXTBSY          /* text file busy */
+#define EFBIG           EFBIG            /* file too large */
+#define ENOSPC          ENOSPC           /* no space left on device */
+#define ESPIPE          ESPIPE           /* invalid seek */
+#define EROFS           EROFS            /* read-only filesystem */
+#define EMLINK          EMLINK           /* too many links */
+#define EPIPE           EPIPE            /* broken pipe */
+#define EDOM            EDOM             /* argument out of function domain */
+#define ERANGE          ERANGE           /* result too large */
+#define EDEADLK         EDEADLK          /* resource deadlock avoided */
+#define ENAMETOOLONG    ENAMETOOLONG     /* filename too long */
+#define ENOLCK          ENOLCK           /* no locks available */
+#define ENOSYS          ENOSYS           /* system call not implemented */
+#define ENOTEMPTY       ENOTEMPTY        /* directory not empty */
+#define ELOOP           ELOOP            /* too many levels of symbolic links */
+#define ENOMSG          ENOMSG           /* no message of the desired type */
+#define EIDRM           EIDRM            /* identifier removed */
+#define ECHRNG          ECHRNG           /* channel number out of range */
+#define EL2NSYNC        EL2NSYNC         /* level 2 not synchronized */
+#define EL3HLT          EL3HLT           /* level 3 halted */
+#define EL3RST          EL3RST           /* level 3 halted */
+#define ELNRNG          ELNRNG           /* link number out of range */
+#define EUNATCH         EUNATCH          /* protocol driver not attached */
+#define ENOCSI          ENOCSI           /* no csi structure available */
+#define EL2HLT          EL2HLT           /* level 2 halted */
+#define EBADE           EBADE            /* invalid exchange */
+#define EBADR           EBADR            /* invalid request descriptor */
+#define EXFULL          EXFULL           /* exchange full */
+#define ENOANO          ENOANO           /* no anode */
+#define EBADRQC         EBADRQC          /* invalid request code */
+#define EBADSLT         EBADSLT          /* invalid slot */
+#define ENOSTR          ENOSTR           /* no string */
+#define ENODATA         ENODATA          /* no data */
+#define ETIME           ETIME            /* timer expired */
+#define ENOSR           ENOSR            /* out of streams resources */
+#define ENONET          ENONET           /* no network */
+#define ENOPKG          ENOPKG           /* package not installed */
+#define EREMOTE         EREMOTE          /* object is remote */
+#define ENOLINK         ENOLINK          /* link severed */
+#define EADV            EADV             /* todo */
+#define ESRMNT          ESRMNT           /* todo */
+#define ECOMM           ECOMM            /* communication error on send */
+#define EPROTO          EPROTO           /* protocol error */
+#define EMULTIHOP       EMULTIHOP        /* multihop attempted */
+#define EDOTDOT         EDOTDOT          /* todo */
+#define EBADMSG         EBADMSG          /* bad message */
+#define EOVERFLOW       EOVERFLOW        /* value too large for type */
+#define ENOTUNIQ        ENOTUNIQ         /* name not unique on network */
+#define EBADFD          EBADFD           /* fd in bad *state* (cf. EBADF) */
+#define EREMCHG         EREMCHG          /* remote address changed */
+#define ELIBACC         ELIBACC          /* cannot access dso */
+#define ELIBBAD         ELIBBAD          /* corrupted shared library */
+#define ELIBSCN         ELIBSCN          /* a.out section corrupted */
+#define ELIBMAX         ELIBMAX          /* too many shared libraries */
+#define ELIBEXEC        ELIBEXEC         /* cannot exec a dso directly */
+#define EILSEQ          EILSEQ           /* invalid wide character */
+#define ERESTART        ERESTART         /* please restart syscall */
+#define ESTRPIPE        ESTRPIPE         /* streams pipe error */
+#define EUSERS          EUSERS           /* too many users */
+#define ENOTSOCK        ENOTSOCK         /* not a socket */
+#define EDESTADDRREQ    EDESTADDRREQ     /* dest address needed */
+#define EMSGSIZE        EMSGSIZE         /* message too long */
+#define EPROTOTYPE      EPROTOTYPE       /* protocol wrong for socket */
+#define ENOPROTOOPT     ENOPROTOOPT      /* protocol not available */
+#define EPROTONOSUPPORT EPROTONOSUPPORT  /* protocol not supported */
+#define ESOCKTNOSUPPORT ESOCKTNOSUPPORT  /* socket type not supported */
+#define EOPNOTSUPP      EOPNOTSUPP       /* operation not supported on socket */
+#define EPFNOSUPPORT    EPFNOSUPPORT     /* protocol family not supported */
+#define EAFNOSUPPORT    EAFNOSUPPORT     /* address family not supported */
+#define EADDRINUSE      EADDRINUSE       /* address already in use */
+#define EADDRNOTAVAIL   EADDRNOTAVAIL    /* address not available */
+#define ENETDOWN        ENETDOWN         /* network is down */
+#define ENETUNREACH     ENETUNREACH      /* network unreachable */
+#define ENETRESET       ENETRESET        /* connection aborted by network */
+#define ECONNABORTED    ECONNABORTED     /* connection aborted */
+#define ECONNRESET      ECONNRESET       /* connection reset */
+#define ENOBUFS         ENOBUFS          /* no buffer space available */
+#define EISCONN         EISCONN          /* socket is connected */
+#define ENOTCONN        ENOTCONN         /* the socket is not connected */
+#define ESHUTDOWN       ESHUTDOWN        /* no send after endpoint shutdown */
+#define ETOOMANYREFS    ETOOMANYREFS     /* too many refs */
+#define ETIMEDOUT       ETIMEDOUT        /* connection timed out */
+#define ECONNREFUSED    ECONNREFUSED     /* connection refused */
+#define EHOSTDOWN       EHOSTDOWN        /* host is down */
+#define EHOSTUNREACH    EHOSTUNREACH     /* host is unreachable */
+#define EALREADY        EALREADY         /* connection already in progress */
+#define EINPROGRESS     EINPROGRESS      /* operation in progress */
+#define ESTALE          ESTALE           /* stale file handle */
+#define EUCLEAN         EUCLEAN          /* structure needs cleaning */
+#define ENOTNAM         ENOTNAM          /* todo */
+#define ENAVAIL         ENAVAIL          /* todo */
+#define EISNAM          EISNAM           /* is a named type file */
+#define EREMOTEIO       EREMOTEIO        /* remote i/o error */
+#define EDQUOT          EDQUOT           /* disk quota exceeded */
+#define ENOMEDIUM       ENOMEDIUM        /* no medium found */
+#define EMEDIUMTYPE     EMEDIUMTYPE      /* wrong medium type */
+#define ECANCELED       ECANCELED        /* operation canceled */
+#define ENOKEY          ENOKEY           /* required key not available */
+#define EKEYEXPIRED     EKEYEXPIRED      /* key has expired */
+#define EKEYREVOKED     EKEYREVOKED      /* key has been revoked */
+#define EKEYREJECTED    EKEYREJECTED     /* key was rejected by service */
+#define EOWNERDEAD      EOWNERDEAD       /* owner died */
+#define ENOTRECOVERABLE ENOTRECOVERABLE  /* state not recoverable */
+#define ERFKILL         ERFKILL          /* can't op b/c RF-kill */
+#define EHWPOISON       EHWPOISON        /* mempage has h/w error */
+#define EWOULDBLOCK     EAGAIN           /* poll fd and try again */
+#define ENOTSUP         ENOTSUP
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern errno_t errno;
+
+hidden extern const long EPERM;
+hidden extern const long ENOENT;
+hidden extern const long ESRCH;
+hidden extern const long EINTR;
+hidden extern const long EIO;
+hidden extern const long ENXIO;
+hidden extern const long E2BIG;
+hidden extern const long ENOEXEC;
+hidden extern const long EBADF;
+hidden extern const long ECHILD;
+hidden extern const long EAGAIN;
+hidden extern const long ENOMEM;
+hidden extern const long EACCES;
+hidden extern const long EFAULT;
+hidden extern const long ENOTBLK;
+hidden extern const long EBUSY;
+hidden extern const long EEXIST;
+hidden extern const long EXDEV;
+hidden extern const long ENODEV;
+hidden extern const long ENOTDIR;
+hidden extern const long EISDIR;
+hidden extern const long EINVAL;
+hidden extern const long ENFILE;
+hidden extern const long EMFILE;
+hidden extern const long ENOTTY;
+hidden extern const long ETXTBSY;
+hidden extern const long EFBIG;
+hidden extern const long ENOSPC;
+hidden extern const long ESPIPE;
+hidden extern const long EROFS;
+hidden extern const long EMLINK;
+hidden extern const long EPIPE;
+hidden extern const long EDOM;
+hidden extern const long ERANGE;
+hidden extern const long EDEADLK;
+hidden extern const long ENAMETOOLONG;
+hidden extern const long ENOLCK;
+hidden extern const long ENOSYS;
+hidden extern const long ENOTEMPTY;
+hidden extern const long ELOOP;
+hidden extern const long ENOMSG;
+hidden extern const long EIDRM;
+hidden extern const long ECHRNG;
+hidden extern const long EL2NSYNC;
+hidden extern const long EL3HLT;
+hidden extern const long EL3RST;
+hidden extern const long ELNRNG;
+hidden extern const long EUNATCH;
+hidden extern const long ENOCSI;
+hidden extern const long EL2HLT;
+hidden extern const long EBADE;
+hidden extern const long EBADR;
+hidden extern const long EXFULL;
+hidden extern const long ENOANO;
+hidden extern const long EBADRQC;
+hidden extern const long EBADSLT;
+hidden extern const long ENOSTR;
+hidden extern const long ENODATA;
+hidden extern const long ETIME;
+hidden extern const long ENOSR;
+hidden extern const long ENONET;
+hidden extern const long ENOPKG;
+hidden extern const long EREMOTE;
+hidden extern const long ENOLINK;
+hidden extern const long EADV;
+hidden extern const long ESRMNT;
+hidden extern const long ECOMM;
+hidden extern const long EPROTO;
+hidden extern const long EMULTIHOP;
+hidden extern const long EDOTDOT;
+hidden extern const long EBADMSG;
+hidden extern const long EOVERFLOW;
+hidden extern const long ENOTUNIQ;
+hidden extern const long EBADFD;
+hidden extern const long EREMCHG;
+hidden extern const long ELIBACC;
+hidden extern const long ELIBBAD;
+hidden extern const long ELIBSCN;
+hidden extern const long ELIBMAX;
+hidden extern const long ELIBEXEC;
+hidden extern const long EILSEQ;
+hidden extern const long ERESTART;
+hidden extern const long ESTRPIPE;
+hidden extern const long EUSERS;
+hidden extern const long ENOTSOCK;
+hidden extern const long EDESTADDRREQ;
+hidden extern const long EMSGSIZE;
+hidden extern const long EPROTOTYPE;
+hidden extern const long ENOPROTOOPT;
+hidden extern const long EPROTONOSUPPORT;
+hidden extern const long ESOCKTNOSUPPORT;
+hidden extern const long EOPNOTSUPP;
+hidden extern const long EPFNOSUPPORT;
+hidden extern const long EAFNOSUPPORT;
+hidden extern const long EADDRINUSE;
+hidden extern const long EADDRNOTAVAIL;
+hidden extern const long ENETDOWN;
+hidden extern const long ENETUNREACH;
+hidden extern const long ENETRESET;
+hidden extern const long ECONNABORTED;
+hidden extern const long ECONNRESET;
+hidden extern const long ENOBUFS;
+hidden extern const long EISCONN;
+hidden extern const long ENOTCONN;
+hidden extern const long ESHUTDOWN;
+hidden extern const long ETOOMANYREFS;
+hidden extern const long ETIMEDOUT;
+hidden extern const long ECONNREFUSED;
+hidden extern const long EHOSTDOWN;
+hidden extern const long EHOSTUNREACH;
+hidden extern const long EALREADY;
+hidden extern const long EINPROGRESS;
+hidden extern const long ESTALE;
+hidden extern const long EUCLEAN;
+hidden extern const long ENOTNAM;
+hidden extern const long ENAVAIL;
+hidden extern const long EISNAM;
+hidden extern const long EREMOTEIO;
+hidden extern const long EDQUOT;
+hidden extern const long ENOMEDIUM;
+hidden extern const long EMEDIUMTYPE;
+hidden extern const long ECANCELED;
+hidden extern const long ENOKEY;
+hidden extern const long EKEYEXPIRED;
+hidden extern const long EKEYREVOKED;
+hidden extern const long EKEYREJECTED;
+hidden extern const long EOWNERDEAD;
+hidden extern const long ENOTRECOVERABLE;
+hidden extern const long ERFKILL;
+hidden extern const long EHWPOISON;
+hidden extern const long ENOTSUP;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/inttypes.h */
+
+#define COSMOPOLITAN_LIBC_INTTYPES_H_
+
+typedef __INT_LEAST8_TYPE__ int_least8_t;
+typedef __UINT_LEAST8_TYPE__ uint_least8_t;
+typedef __INT_LEAST16_TYPE__ int_least16_t;
+typedef __UINT_LEAST16_TYPE__ uint_least16_t;
+typedef __INT_LEAST32_TYPE__ int_least32_t;
+typedef __UINT_LEAST32_TYPE__ uint_least32_t;
+typedef __INT_LEAST64_TYPE__ int_least64_t;
+typedef __UINT_LEAST64_TYPE__ uint_least64_t;
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation                                    ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define __PRI8 "hh"
+
+#if __SIZEOF_INT__ == 2
+#define __PRI16 ""
+#elif __SIZEOF_SHORT__ == 2
+#define __PRI16 "h"
+#elif __SIZEOF_LONG__ == 2
+#define __PRI16 "l"
+#endif
+
+#if __SIZEOF_INT__ == 4
+#define __PRI32 ""
+#elif __SIZEOF_LONG__ == 4
+#define __PRI32 "l"
+#elif __SIZEOF_LONG_LONG__ == 4
+#define __PRI32 "ll"
+#endif
+
+#if __SIZEOF_INT__ == 8
+#define __PRI64 ""
+#elif __SIZEOF_LONG__ == 8
+#define __PRI64 "l"
+#elif __SIZEOF_LONG_LONG__ == 8
+#define __PRI64 "ll"
+#endif
+
+#if __SIZEOF_INT__ == 16
+#define __PRI128 ""
+#elif __SIZEOF_LONG__ == 16
+#define __PRI128 "l"
+#elif __SIZEOF_LONG_LONG__ == 16
+#define __PRI128 "ll"
+#elif __SIZEOF_INTMAX__ == 16
+#define __PRI128 "j"
+#endif
+
+#if __SIZEOF_POINTER__ == __SIZEOF_INT__
+#define __PRIPTR ""
+#elif __SIZEOF_POINTER__ == __SIZEOF_LONG__
+#define __PRIPTR "l"
+#elif __SIZEOF_POINTER__ == __SIZEOF_LONG_LONG__
+#define __PRIPTR "ll"
+#endif
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation » printf » decimal                 ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define PRId8   __PRI8 "d"
+#define PRId16  __PRI16 "d"
+#define PRId32  __PRI32 "d"
+#define PRId64  __PRI64 "d"
+#define PRId128 __PRI128 "d"
+
+#define PRIdLEAST8   __PRI8 "d"
+#define PRIdLEAST16  __PRI16 "d"
+#define PRIdLEAST32  __PRI32 "d"
+#define PRIdLEAST64  __PRI64 "d"
+#define PRIdLEAST128 __PRI128 "d"
+
+#define PRIdFAST8   __PRI8 "d"
+#define PRIdFAST16  __PRI16 "d"
+#define PRIdFAST32  __PRI32 "d"
+#define PRIdFAST64  __PRI64 "d"
+#define PRIdFAST128 __PRI128 "d"
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation » printf » unsigned decimal        ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define PRIu8   __PRI8 "u"
+#define PRIu16  __PRI16 "u"
+#define PRIu32  __PRI32 "u"
+#define PRIu64  __PRI64 "u"
+#define PRIu128 __PRI128 "u"
+
+#define PRIuLEAST8   __PRI8 "u"
+#define PRIuLEAST16  __PRI16 "u"
+#define PRIuLEAST32  __PRI32 "u"
+#define PRIuLEAST64  __PRI64 "u"
+#define PRIuLEAST128 __PRI128 "u"
+
+#define PRIuFAST8   __PRI8 "u"
+#define PRIuFAST16  __PRI16 "u"
+#define PRIuFAST32  __PRI32 "u"
+#define PRIuFAST64  __PRI64 "u"
+#define PRIuFAST128 __PRI128 "u"
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation » printf » wut                     ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define PRIi8   __PRI8 "i"
+#define PRIi16  __PRI16 "i"
+#define PRIi32  __PRI32 "i"
+#define PRIi64  __PRI64 "i"
+#define PRIi128 __PRI128 "i"
+
+#define PRIiLEAST8   __PRI8 "i"
+#define PRIiLEAST16  __PRI16 "i"
+#define PRIiLEAST32  __PRI32 "i"
+#define PRIiLEAST64  __PRI64 "i"
+#define PRIiLEAST128 __PRI128 "i"
+
+#define PRIiFAST8   __PRI8 "i"
+#define PRIiFAST16  __PRI16 "i"
+#define PRIiFAST32  __PRI32 "i"
+#define PRIiFAST64  __PRI64 "i"
+#define PRIiFAST128 __PRI128 "i"
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation » printf » octal                   ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define PRIo8   __PRI8 "o"
+#define PRIo16  __PRI16 "o"
+#define PRIo32  __PRI32 "o"
+#define PRIo64  __PRI64 "o"
+#define PRIo128 __PRI128 "o"
+
+#define PRIoLEAST8   __PRI8 "o"
+#define PRIoLEAST16  __PRI16 "o"
+#define PRIoLEAST32  __PRI32 "o"
+#define PRIoLEAST64  __PRI64 "o"
+#define PRIoLEAST128 __PRI128 "o"
+
+#define PRIoFAST8   __PRI8 "o"
+#define PRIoFAST16  __PRI16 "o"
+#define PRIoFAST32  __PRI32 "o"
+#define PRIoFAST64  __PRI64 "o"
+#define PRIoFAST128 __PRI128 "o"
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation » printf » hexadecimal             ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define PRIx8   __PRI8 "x"
+#define PRIx16  __PRI16 "x"
+#define PRIx32  __PRI32 "x"
+#define PRIx64  __PRI64 "x"
+#define PRIx128 __PRI128 "x"
+
+#define PRIxLEAST8   __PRI8 "x"
+#define PRIxLEAST16  __PRI16 "x"
+#define PRIxLEAST32  __PRI32 "x"
+#define PRIxLEAST64  __PRI64 "x"
+#define PRIxLEAST128 __PRI128 "x"
+
+#define PRIxFAST8   __PRI8 "x"
+#define PRIxFAST16  __PRI16 "x"
+#define PRIxFAST32  __PRI32 "x"
+#define PRIxFAST64  __PRI64 "x"
+#define PRIxFAST128 __PRI128 "x"
+
+#define PRIX8   __PRI8 "X"
+#define PRIX16  __PRI16 "X"
+#define PRIX32  __PRI32 "X"
+#define PRIX64  __PRI64 "X"
+#define PRIX128 __PRI128 "X"
+
+#define PRIXLEAST8   __PRI8 "X"
+#define PRIXLEAST16  __PRI16 "X"
+#define PRIXLEAST32  __PRI32 "X"
+#define PRIXLEAST64  __PRI64 "X"
+#define PRIXLEAST128 __PRI128 "X"
+
+#define PRIXFAST8   __PRI8 "X"
+#define PRIXFAST16  __PRI16 "X"
+#define PRIXFAST32  __PRI32 "X"
+#define PRIXFAST64  __PRI64 "X"
+#define PRIXFAST128 __PRI128 "X"
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation » printf » binary                  ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define PRIb8   __PRI8 "b"
+#define PRIb16  __PRI16 "b"
+#define PRIb32  __PRI32 "b"
+#define PRIb64  __PRI64 "b"
+#define PRIb128 __PRI128 "b"
+
+#define PRIbLEAST8   __PRI8 "b"
+#define PRIbLEAST16  __PRI16 "b"
+#define PRIbLEAST32  __PRI32 "b"
+#define PRIbLEAST64  __PRI64 "b"
+#define PRIbLEAST128 __PRI128 "b"
+
+#define PRIbFAST8   __PRI8 "b"
+#define PRIbFAST16  __PRI16 "b"
+#define PRIbFAST32  __PRI32 "b"
+#define PRIbFAST64  __PRI64 "b"
+#define PRIbFAST128 __PRI128 "b"
+
+#define PRIB8   __PRI8 "B"
+#define PRIB16  __PRI16 "B"
+#define PRIB32  __PRI32 "B"
+#define PRIB64  __PRI64 "B"
+#define PRIB128 __PRI128 "B"
+
+#define PRIBLEAST8   __PRI8 "B"
+#define PRIBLEAST16  __PRI16 "B"
+#define PRIBLEAST32  __PRI32 "B"
+#define PRIBLEAST64  __PRI64 "B"
+#define PRIBLEAST128 __PRI128 "B"
+
+#define PRIBFAST8   __PRI8 "B"
+#define PRIBFAST16  __PRI16 "B"
+#define PRIBFAST32  __PRI32 "B"
+#define PRIBFAST64  __PRI64 "B"
+#define PRIBFAST128 __PRI128 "B"
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation » printf » miscellaneous           ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define PRIdMAX "jd"
+#define PRIiMAX "ji"
+#define PRIoMAX "jo"
+#define PRIuMAX "ju"
+#define PRIxMAX "jx"
+#define PRIXMAX "jX"
+
+#define PRIdPTR __PRIPTR "d"
+#define PRIiPTR __PRIPTR "i"
+#define PRIoPTR __PRIPTR "o"
+#define PRIuPTR __PRIPTR "u"
+#define PRIxPTR __PRIPTR "x"
+#define PRIXPTR __PRIPTR "X"
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation » scanf » decimal                  ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define SCNd8   __PRI8 "d"
+#define SCNd16  __PRI16 "d"
+#define SCNd32  __PRI32 "d"
+#define SCNd64  __PRI64 "d"
+#define SCNd128 __PRI128 "d"
+
+#define SCNdLEAST8   __PRI8 "d"
+#define SCNdLEAST16  __PRI16 "d"
+#define SCNdLEAST32  __PRI32 "d"
+#define SCNdLEAST64  __PRI64 "d"
+#define SCNdLEAST128 __PRI128 "d"
+
+#define SCNdFAST8   __PRI8 "d"
+#define SCNdFAST16  __PRI16 "d"
+#define SCNdFAST32  __PRI32 "d"
+#define SCNdFAST64  __PRI64 "d"
+#define SCNdFAST128 __PRI128 "d"
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation » scanf » flexidecimal             ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define SCNi8   __PRI8 "i"
+#define SCNi16  __PRI16 "i"
+#define SCNi32  __PRI32 "i"
+#define SCNi64  __PRI64 "i"
+#define SCNi128 __PRI128 "i"
+
+#define SCNiLEAST8   __PRI8 "i"
+#define SCNiLEAST16  __PRI16 "i"
+#define SCNiLEAST32  __PRI32 "i"
+#define SCNiLEAST64  __PRI64 "i"
+#define SCNiLEAST128 __PRI128 "i"
+
+#define SCNiFAST8   __PRI8 "i"
+#define SCNiFAST16  __PRI16 "i"
+#define SCNiFAST32  __PRI32 "i"
+#define SCNiFAST64  __PRI64 "i"
+#define SCNiFAST128 __PRI128 "i"
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation » scanf » unsigned decimal         ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define SCNu8   __PRI8 "u"
+#define SCNu16  __PRI16 "u"
+#define SCNu32  __PRI32 "u"
+#define SCNu64  __PRI64 "u"
+#define SCNu128 __PRI128 "u"
+
+#define SCNuLEAST8   __PRI8 "u"
+#define SCNuLEAST16  __PRI16 "u"
+#define SCNuLEAST32  __PRI32 "u"
+#define SCNuLEAST64  __PRI64 "u"
+#define SCNuLEAST128 __PRI128 "u"
+
+#define SCNuFAST8   __PRI8 "u"
+#define SCNuFAST16  __PRI16 "u"
+#define SCNuFAST32  __PRI32 "u"
+#define SCNuFAST64  __PRI64 "u"
+#define SCNuFAST128 __PRI128 "u"
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation » scanf » octal                    ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define SCNo8   __PRI8 "o"
+#define SCNo16  __PRI16 "o"
+#define SCNo32  __PRI32 "o"
+#define SCNo64  __PRI64 "o"
+#define SCNo128 __PRI128 "o"
+
+#define SCNoLEAST8   __PRI8 "o"
+#define SCNoLEAST16  __PRI16 "o"
+#define SCNoLEAST32  __PRI32 "o"
+#define SCNoLEAST64  __PRI64 "o"
+#define SCNoLEAST128 __PRI128 "o"
+
+#define SCNoFAST8   __PRI8 "o"
+#define SCNoFAST16  __PRI16 "o"
+#define SCNoFAST32  __PRI32 "o"
+#define SCNoFAST64  __PRI64 "o"
+#define SCNoFAST128 __PRI128 "o"
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation » scanf » hexadecimal              ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define SCNx8   __PRI8 "x"
+#define SCNx16  __PRI16 "x"
+#define SCNx32  __PRI32 "x"
+#define SCNx64  __PRI64 "x"
+#define SCNx128 __PRI128 "x"
+
+#define SCNxLEAST8   __PRI8 "x"
+#define SCNxLEAST16  __PRI16 "x"
+#define SCNxLEAST32  __PRI32 "x"
+#define SCNxLEAST64  __PRI64 "x"
+#define SCNxLEAST128 __PRI128 "x"
+
+#define SCNxFAST8   __PRI8 "x"
+#define SCNxFAST16  __PRI16 "x"
+#define SCNxFAST32  __PRI32 "x"
+#define SCNxFAST64  __PRI64 "x"
+#define SCNxFAST128 __PRI128 "x"
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation » scanf » binary                   ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define SCNb8   __PRI8 "b"
+#define SCNb16  __PRI16 "b"
+#define SCNb32  __PRI32 "b"
+#define SCNb64  __PRI64 "b"
+#define SCNb128 __PRI128 "b"
+
+#define SCNbLEAST8   __PRI8 "b"
+#define SCNbLEAST16  __PRI16 "b"
+#define SCNbLEAST32  __PRI32 "b"
+#define SCNbLEAST64  __PRI64 "b"
+#define SCNbLEAST128 __PRI128 "b"
+
+#define SCNbFAST8   __PRI8 "b"
+#define SCNbFAST16  __PRI16 "b"
+#define SCNbFAST32  __PRI32 "b"
+#define SCNbFAST64  __PRI64 "b"
+#define SCNbFAST128 __PRI128 "b"
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dismal format notation » scanf » miscellaneous            ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define SCNdMAX "jd"
+#define SCNiMAX "ji"
+#define SCNoMAX "jo"
+#define SCNuMAX "ju"
+#define SCNxMAX "jx"
+
+#define SCNdPTR __PRIPTR "d"
+#define SCNiPTR __PRIPTR "i"
+#define SCNoPTR __PRIPTR "o"
+#define SCNuPTR __PRIPTR "u"
+#define SCNxPTR __PRIPTR "x"
+
+
+
+/*!BEGIN libc/limits.h */
+
+#define COSMOPOLITAN_LIBC_LIMITS_H_
+
+#define UCHAR_MIN 0
+#define UCHAR_MAX 255
+
+#if '\200' < 0
+#define CHAR_MIN '\200'
+#define CHAR_MAX '\177'
+#else
+#define CHAR_MIN '\0'
+#define CHAR_MAX '\377'
+#endif
+
+#define SCHAR_MAX     __SCHAR_MAX__
+#define SHRT_MAX      __SHRT_MAX__
+#define INT_MAX       __INT_MAX__
+#define LONG_MAX      __LONG_MAX__
+#define LLONG_MAX     LONG_LONG_MAX
+#define LONG_LONG_MAX __LONG_LONG_MAX__
+#define SIZE_MAX      __SIZE_MAX__
+#define INT8_MAX      __INT8_MAX__
+#define INT16_MAX     __INT16_MAX__
+#define INT32_MAX     __INT32_MAX__
+#define INT64_MAX     __INT64_MAX__
+#define WINT_MAX      __WCHAR_MAX__
+#define WCHAR_MAX     __WCHAR_MAX__
+#define INTPTR_MAX    __INTPTR_MAX__
+#define PTRDIFF_MAX   __PTRDIFF_MAX__
+#define UINTPTR_MAX   __UINTPTR_MAX__
+#define UINT8_MAX     __UINT8_MAX__
+#define UINT16_MAX    __UINT16_MAX__
+#define UINT32_MAX    __UINT32_MAX__
+#define UINT64_MAX    __UINT64_MAX__
+
+#define SCHAR_MIN     (-SCHAR_MAX - 1)
+#define SHRT_MIN      (-SHRT_MAX - 1)
+#define INT_MIN       (-INT_MAX - 1)
+#define LONG_MIN      (-LONG_MAX - 1)
+#define LLONG_MIN     (-LLONG_MAX - 1)
+#define LONG_LONG_MIN (-LONG_LONG_MAX - 1)
+#define SIZE_MIN      (-SIZE_MAX - 1)
+#define INT8_MIN      (-INT8_MAX - 1)
+#define INT16_MIN     (-INT16_MAX - 1)
+#define INT32_MIN     (-INT32_MAX - 1)
+#define INT64_MIN     (-INT64_MAX - 1)
+#define INTMAX_MIN    (-INTMAX_MAX - 1)
+#define INTPTR_MIN    (-INTPTR_MAX - 1)
+#define WINT_MIN      (-WINT_MAX - 1)
+#define WCHAR_MIN     (-WCHAR_MAX - 1)
+#define PTRDIFF_MIN   (-PTRDIFF_MAX - 1)
+
+#define USHRT_MAX 65535
+#define UINT_MAX  0xffffffffu
+#if __SIZEOF_LONG__ == 8
+#define ULONG_MAX 0xfffffffffffffffful
+#else
+#define ULONG_MAX 0xfffffffful
+#endif
+#define ULLONG_MAX     0xffffffffffffffffull
+#define ULONG_LONG_MAX 0xffffffffffffffffull
+
+#define USHRT_MIN      0
+#define UINT_MIN       0u
+#define ULONG_MIN      0ul
+#define ULLONG_MIN     0ull
+#define ULONG_LONG_MIN 0ull
+#define UINT8_MIN      0
+#define UINT16_MIN     0
+#define UINT32_MIN     0u
+#define UINT64_MIN     0ull
+#define UINTPTR_MIN    0ull
+
+#define MB_CUR_MAX 4
+#define MB_LEN_MAX 4
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#if __GNUC__ * 100 + __GNUC_MINOR__ >= 406 || defined(__llvm__)
+#define INTMAX_MAX \
+  (((intmax_t)0x7fffffffffffffff) << 64 | (intmax_t)0xffffffffffffffff)
+#define UINTMAX_MAX \
+  (((uintmax_t)0xffffffffffffffff) << 64 | (uintmax_t)0xffffffffffffffff)
+#define INT128_MIN  INTMAX_MIN
+#define INT128_MAX  INTMAX_MAX
+#define UINTMAX_MIN ((uintmax_t)0)
+#define UINT128_MIN ((uintmax_t)0)
+#define UINT128_MAX UINTMAX_MAX
+#else
+#define INTMAX_MAX  __INT64_MAX__
+#define UINTMAX_MAX __UINT64_MAX__
+#define UINTMAX_MIN UINT64_MIN
+#endif /* GCC 4.6+ */
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/literal.h */
+
+#define COSMOPOLITAN_LIBC_LITERAL_H_
+
+#ifdef __INT8_C
+#define INT8_C(c)   __INT8_C(c)
+#define UINT8_C(c)  __UINT8_C(c)
+#define INT16_C(c)  __INT16_C(c)
+#define UINT16_C(c) __UINT16_C(c)
+#define INT32_C(c)  __INT32_C(c)
+#define UINT32_C(c) __UINT32_C(c)
+#define INT64_C(c)  __INT64_C(c)
+#define UINT64_C(c) __UINT64_C(c)
+#else
+#define INT8_C(c)   c
+#define UINT8_C(c)  c
+#define INT16_C(c)  c
+#define UINT16_C(c) c
+#define INT32_C(c)  c
+#define UINT32_C(c) c##U
+#define INT64_C(c)  c##L
+#define UINT64_C(c) c##UL
+#endif
+
+#if __SIZEOF_INTMAX__ == 16
+#define INT128_C(c)  ((intmax_t)(c))
+#define UINT128_C(c) ((uintmax_t)(c))
+#elif __SIZEOF_INTMAX__ == 8
+#define INT128_C(c)  __INT64_C(c)
+#define UINT128_C(c) __UINT64_C(c)
+#endif
+
+
+
+/*!BEGIN libc/mach.h */
+
+#define COSMOPOLITAN_LIBC_MACH_H_
+/*                                            ▄▄███▄
+                                          ▄▄████████▄
+                                       ▄█████████████▄
+                                   ▄▄███▓▓▓▓▓▓▓▓▓▓▓███▄
+                               ▄▄█████▓▓▓█████████▓▓▓██▄
+                           ▄▄████████▓▓▓███████▓▓▓▓▓████▄
+                        ▄█████░░░████▓▓█████▓▓▓▓█████████▄
+                    ▄▄█████████░░░███▓▓█▓▓▓▓▒███████▓▓▒███▄
+                 ▄██████████████░░░██▓▓▓▓███████████▓▓█████▄
+               ██████████████████░░░██▓▓▓█████████▓▓▓███████▄
+                ███░░░░░░█████████▓░░███▓▓▓▓▓▓▓▓▓▓▓█████▒▒▒██▄
+               █░███░░░██░░░░░░░░░██░░██████████████▒▒▒▒██████▄
+              ███████░░░█████████░░░░░░█████████▒▒▒▒▒██████████▄
+              █████ ██░░░███████████████████▒▒▒▒▒██░▒▒██████████▄
+              ██████ ██░░░██████████████░███▒████████▒▒██████████▄
+             ████████ ███░░█████████████░░████████████▒▒███████████
+             █████████ ███░░███████████░░██████████████▒▒███████████
+            ▄██████████ ██████████████ ░░███████████████▒▒███████████
+            ████████████ ███░░░░░█████░░█████████████████▒▒██████  █
+            █████████████ ██████░░░░░░░▒█████████████████████  ████▀
+             █████████████ ██████████░░░░░░░░░███████████  ████████
+              █████████████ ████████░░███████░░░██████ ▓██████████
+               █████████████ ██████░░░████████████  █████████████
+╔────────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § xnu's not unix! » carnegie mellon mach microkernel        ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define XNU_SYSCALL_MASK_MACH     0x1000000
+#define XNU_SYSCALL_MASK_UNIX     0x2000000
+#define XNU_SYSCALL_MASK_MACH_IPC 0x5000000
+
+#define kXnuCommonPage   0x00007fffffe00000
+#define kXnuNtTscBase    0x050 /* uint64_t */
+#define kXnuNtScale      0x058 /* uint32_t */
+#define kXnuNtShift      0x05c /* uint32_t */
+#define kXnuNtNsBase     0x060 /* uint64_t */
+#define kXnuNtGeneration 0x068 /* uint32_t */
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+bool swtch(void);
+bool swtch_pri(int);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/math.h */
+
+#define COSMOPOLITAN_LIBC_MATH_H_
+/*─────────────────────────────────────────────────────────────────────────────╗
+│ cosmopolitan § mathematics                                                   │
+╚─────────────────────────────────────────────────────────────────────────────*/
+
+#define M_E        2.7182818284590452354 /* 𝑒 */
+#define M_LOG2_10  0xd.49a784bcd1b8afep-2 /* log₂10 ≈ 3.3219280948873623478 */
+#define M_LOG10_2  0x9.a209a84fbcff799p-5 /* log₁₀2 ≈ 0.301029995663981195 */
+#define M_LOG2E    0xb.8aa3b295c17f0bcp-3 /* log₂𝑒 ≈ 1.4426950408889634074 */
+#define M_LOG10E   0.43429448190325182765  /* log₁₀𝑒 */
+#define M_LN2      0xb.17217f7d1cf79acp-4  /* logₑ2 ≈ */
+#define M_LN10     2.30258509299404568402  /* logₑ10 */
+#define M_TAU      0x1.921fb54442d1846ap+2 /* τ = 2π */
+#define M_PI       0x1.921fb54442d1846ap+1 /* π ≈ 3.14159265358979323846 */
+#define M_PI_2     1.57079632679489661923  /* π/2 */
+#define M_PI_4     0.78539816339744830962  /* π/4 */
+#define M_1_PI     0.31830988618379067154  /* 1/π */
+#define M_2_PI     0.63661977236758134308  /* 2/π */
+#define M_2_SQRTPI 1.12837916709551257390  /* 2/sqrtπ */
+#define M_SQRT2    1.41421356237309504880  /* sqrt2 */
+#define M_SQRT1_2  0.70710678118654752440  /* 1/sqrt2 */
+
+#define DBL_DECIMAL_DIG  __DBL_DECIMAL_DIG__
+#define DBL_DIG          __DBL_DIG__
+#define DBL_EPSILON      __DBL_EPSILON__
+#define DBL_MANT_DIG     __DBL_MANT_DIG__
+#define DBL_MANT_DIG     __DBL_MANT_DIG__
+#define DBL_MAX          __DBL_MAX__
+#define DBL_MAX_10_EXP   __DBL_MAX_10_EXP__
+#define DBL_MAX_EXP      __DBL_MAX_EXP__
+#define DBL_MIN          __DBL_MIN__ /* 2.23e–308 ↔ 1.79e308 */
+#define DBL_MIN_10_EXP   __DBL_MIN_10_EXP__
+#define DBL_MIN_EXP      __DBL_MIN_EXP__
+#define DECIMAL_DIG      __LDBL_DECIMAL_DIG__
+#define FLT_DECIMAL_DIG  __FLT_DECIMAL_DIG__
+#define FLT_RADIX        __FLT_RADIX__
+#define FLT_DIG          __FLT_DIG__
+#define FLT_EPSILON      __FLT_EPSILON__
+#define FLT_MANT_DIG     __FLT_MANT_DIG__
+#define FLT_MANT_DIG     __FLT_MANT_DIG__
+#define FLT_MAX          __FLT_MAX__
+#define FLT_MAX_10_EXP   __FLT_MAX_10_EXP__
+#define FLT_MAX_EXP      __FLT_MAX_EXP__
+#define FLT_MIN          __FLT_MIN__ /* 1.18e–38 ↔ 3.40e38 */
+#define FLT_MIN_10_EXP   __FLT_MIN_10_EXP__
+#define FLT_MIN_EXP      __FLT_MIN_EXP__
+#define HLF_MAX          6.50e4f
+#define HLF_MIN          3.10e-5f
+#define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__
+#define LDBL_DIG         __LDBL_DIG__
+#define LDBL_EPSILON     __LDBL_EPSILON__
+#define LDBL_MANT_DIG    __LDBL_MANT_DIG__
+#define LDBL_MANT_DIG    __LDBL_MANT_DIG__
+#define LDBL_MAX         __LDBL_MAX__
+#define LDBL_MAX_10_EXP  __LDBL_MAX_10_EXP__
+#define LDBL_MAX_EXP     __LDBL_MAX_EXP__
+#define LDBL_MIN         __LDBL_MIN__ /* 3.37e–4932 ↔ 1.18e4932 */
+#define LDBL_MIN_10_EXP  __LDBL_MIN_10_EXP__
+#define LDBL_MIN_EXP     __LDBL_MIN_EXP__
+
+#define FP_NAN       0
+#define FP_INFINITE  1
+#define FP_ZERO      2
+#define FP_SUBNORMAL 3
+#define FP_NORMAL    4
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#define NAN      __builtin_nanf("")
+#define INFINITY __builtin_inff()
+#define HUGE_VAL __builtin_inff()
+
+#if __FLT_EVAL_METHOD__ + 0 == 2
+typedef long double float_t;
+typedef long double double_t;
+#else
+typedef float float_t;
+typedef double double_t;
+#endif
+
+#define isinf(x)             __builtin_isinf(x)
+#define isnan(x)             __builtin_isnan(x)
+#define isfinite(x)          __builtin_isfinite(x)
+#define isnormal(x)          __builtin_isnormal(x)
+#define signbit(x)           __builtin_signbit(x)
+#define isgreater(x, y)      __builtin_isgreater(x, y)
+#define isgreaterequal(x, y) __builtin_isgreaterequal(x, y)
+#define isless(x, y)         __builtin_isless(x, y)
+#define islessequal(x, y)    __builtin_islessequal(x, y)
+#define islessgreater(x, y)  __builtin_islessgreater(x, y)
+#define isunordered(x, y)    __builtin_isunordered(x, y)
+
+#define fpclassify(x) \
+  __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, x)
+
+double acos(double);
+double acosh(double);
+double asin(double);
+double asinh(double);
+double atan(double);
+double atan2(double, double);
+double atanh(double);
+double cbrt(double);
+double ceil(double);
+double copysign(double, double);
+double cos(double);
+double cosh(double);
+double drem(double, double);
+double erf(double);
+double erfc(double);
+double exp(double);
+double exp10(double);
+double exp2(double);
+double expm1(double);
+double fabs(double);
+double fdim(double, double);
+double floor(double);
+double fma(double, double, double);
+double fmax(double, double);
+double fmin(double, double);
+double fmod(double, double);
+double hypot(double, double);
+double ldexp(double, int);
+double log(double);
+double log10(double);
+double log1p(double);
+double log2(double);
+double logb(double);
+double nearbyint(double);
+double nextafter(double, double);
+double nexttoward(double, long double);
+double pow(double, double);
+double pow10(double);
+double powi(double, int);
+double remainder(double, double);
+double rint(double);
+double round(double);
+double scalb(double, double);
+double scalbln(double, long int);
+double scalbn(double, int);
+double significand(double);
+double sin(double);
+double sinh(double);
+double sqrt(double);
+double tan(double);
+double tanh(double);
+double trunc(double);
+double lgamma(double);
+double lgamma_r(double, int *);
+
+float acosf(float);
+float acoshf(float);
+float asinf(float);
+float asinhf(float);
+float atan2f(float, float);
+float atanf(float);
+float atanhf(float);
+float cbrtf(float);
+float ceilf(float);
+float copysignf(float, float);
+float cosf(float);
+float coshf(float);
+float dremf(float, float);
+float erfcf(float);
+float erff(float);
+float exp10f(float);
+float exp2f(float);
+float expf(float);
+float expm1f(float);
+float fabsf(float);
+float fdimf(float, float);
+float floorf(float);
+float fmaf(float, float, float);
+float fmaxf(float, float);
+float fminf(float, float);
+float fmodf(float, float);
+float hypotf(float, float);
+float ldexpf(float, int);
+float log10f(float);
+float log1pf(float);
+float log2f(float);
+float logbf(float);
+float logf(float);
+float nearbyintf(float);
+float nextafterf(float, float);
+float nexttowardf(float, long double);
+float pow10f(float);
+float powf(float, float);
+float powif(float, int);
+float remainderf(float, float);
+float rintf(float);
+float roundf(float);
+float scalbf(float, float);
+float scalblnf(float, long int);
+float scalbnf(float, int);
+float significandf(float);
+float sinf(float);
+float sinhf(float);
+float sqrtf(float);
+float tanf(float);
+float tanhf(float);
+float truncf(float);
+
+long double acoshl(long double);
+long double acosl(long double);
+long double asinhl(long double);
+long double asinl(long double);
+long double atan2l(long double, long double);
+long double atanhl(long double);
+long double atanl(long double);
+long double cbrtl(long double);
+long double ceill(long double);
+long double copysignl(long double, long double);
+long double coshl(long double);
+long double cosl(long double);
+long double dreml(long double, long double);
+long double erfcl(long double);
+long double erfl(long double);
+long double exp10l(long double);
+long double exp2l(long double);
+long double expl(long double);
+long double expm1l(long double);
+long double fabsl(long double);
+long double fdiml(long double, long double);
+long double floorl(long double);
+long double fmal(long double, long double, long double);
+long double fmaxl(long double, long double);
+long double fminl(long double, long double);
+long double fmodl(long double, long double);
+long double hypotl(long double, long double);
+long double ldexpl(long double, int);
+long double log10l(long double);
+long double log1pl(long double);
+long double log2l(long double);
+long double logbl(long double);
+long double logl(long double);
+long double nearbyintl(long double);
+long double nextafterl(long double, long double);
+long double nexttowardl(long double, long double);
+long double pow10l(long double);
+long double powil(long double, int);
+long double powl(long double, long double);
+long double remainderl(long double, long double);
+long double rintl(long double);
+long double roundl(long double);
+long double scalbl(long double, long double);
+long double scalblnl(long double, long int);
+long double scalbnl(long double, int);
+long double significandl(long double);
+long double sinhl(long double);
+long double sinl(long double);
+long double sqrtl(long double);
+long double tanhl(long double);
+long double tanl(long double);
+long double truncl(long double);
+
+long lrint(double);
+long lrintf(float);
+long lrintl(long double);
+long lround(double);
+long lroundf(float);
+long lroundl(long double);
+
+int ilogbf(float);
+int ilogb(double);
+int ilogbl(long double);
+
+long long llrint(double);
+long long llrintf(float);
+long long llrintl(long double);
+long long llround(double);
+long long llroundf(float);
+long long llroundl(long double);
+
+double frexp(double, int *);
+double modf(double, double *);
+double remquo(double, double, int *);
+float frexpf(float, int *);
+float modff(float, float *);
+float remquof(float, float, int *);
+long double frexpl(long double, int *);
+long double modfl(long double, long double *);
+long double remquol(long double, long double, int *);
+void sincos(double, double *, double *);
+void sincosf(float, float *, float *);
+void sincosl(long double, long double *, long double *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/paths.h */
+
+#define COSMOPOLITAN_LIBC_PATHS_H_
+
+#define _PATH_DEFPATH "/usr/local/bin:/bin:/usr/bin"
+#define _PATH_STDPATH "/bin:/usr/bin:/sbin:/usr/sbin"
+
+#define _PATH_BSHELL "/bin/sh"
+#define _PATH_CONSOLE "/dev/console"
+#define _PATH_DEVNULL "/dev/null"
+#define _PATH_KLOG "/proc/kmsg"
+#define _PATH_LASTLOG "/var/log/lastlog"
+#define _PATH_MAILDIR "/var/mail"
+#define _PATH_MAN "/usr/share/man"
+#define _PATH_MNTTAB "/etc/fstab"
+#define _PATH_MOUNTED "/etc/mtab"
+#define _PATH_NOLOGIN "/etc/nologin"
+#define _PATH_SENDMAIL "/usr/sbin/sendmail"
+#define _PATH_SHADOW "/etc/shadow"
+#define _PATH_SHELLS "/etc/shells"
+#define _PATH_TTY "/dev/tty"
+#define _PATH_UTMP "/dev/null/utmp"
+#define _PATH_VI "/usr/bin/vi"
+#define _PATH_WTMP "/dev/null/wtmp"
+
+#define _PATH_DEV "/dev/"
+#define _PATH_TMP "/tmp/"
+#define _PATH_VARDB "/var/lib/misc/"
+#define _PATH_VARRUN "/var/run/"
+#define _PATH_VARTMP "/var/tmp/"
+
+
+
+/*!BEGIN libc/zip.h */
+
+#define COSMOPOLITAN_LIBC_ZIP_H_
+
+
+/*!BEGIN libc/bits/bits.h */
+
+#define COSMOPOLITAN_LIBC_BITS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#define CheckUnsigned(x) ((x) / !((typeof(x))(-1) < 0))
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § bits                                                      ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+extern const uint8_t kReverseBits[256];
+
+uint32_t gray(uint32_t) pureconst;
+uint32_t ungray(uint32_t) pureconst;
+uint8_t bitreverse8(uint8_t) libcesque pureconst;
+uint16_t bitreverse16(uint16_t) libcesque pureconst;
+uint32_t bitreverse32(uint32_t) libcesque pureconst;
+uint64_t bitreverse64(uint64_t) libcesque pureconst;
+unsigned long roundup2pow(unsigned long) libcesque pureconst;
+unsigned long roundup2log(unsigned long) libcesque pureconst;
+unsigned long rounddown2pow(unsigned long) libcesque pureconst;
+unsigned long hamming(unsigned long, unsigned long) pureconst;
+intptr_t lockxchg(void *, void *, size_t);
+bool cmpxchg(void *, intptr_t, intptr_t, size_t);
+bool lockcmpxchg(void *, intptr_t, intptr_t, size_t);
+intptr_t atomic_load(void *, size_t);
+intptr_t atomic_store(void *, intptr_t, size_t);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § bits » no assembly required                               ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define bitreverse8(X) (kReverseBits[(uint8_t)(X)])
+#define bitreverse16(X)                          \
+  ((uint16_t)kReverseBits[(uint8_t)(X)] << 010 | \
+   kReverseBits[((uint16_t)(X) >> 010) & 0xff])
+
+#define READ16LE(S)                             \
+  ((uint16_t)((unsigned char *)(S))[1] << 010 | \
+   (uint16_t)((unsigned char *)(S))[0] << 000)
+#define READ32LE(S)                             \
+  ((uint32_t)((unsigned char *)(S))[3] << 030 | \
+   (uint32_t)((unsigned char *)(S))[2] << 020 | \
+   (uint32_t)((unsigned char *)(S))[1] << 010 | \
+   (uint32_t)((unsigned char *)(S))[0] << 000)
+#define READ64LE(S)                             \
+  ((uint64_t)((unsigned char *)(S))[7] << 070 | \
+   (uint64_t)((unsigned char *)(S))[6] << 060 | \
+   (uint64_t)((unsigned char *)(S))[5] << 050 | \
+   (uint64_t)((unsigned char *)(S))[4] << 040 | \
+   (uint64_t)((unsigned char *)(S))[3] << 030 | \
+   (uint64_t)((unsigned char *)(S))[2] << 020 | \
+   (uint64_t)((unsigned char *)(S))[1] << 010 | \
+   (uint64_t)((unsigned char *)(S))[0] << 000)
+
+#define READ16BE(S)                             \
+  ((uint16_t)((unsigned char *)(S))[0] << 010 | \
+   (uint16_t)((unsigned char *)(S))[1] << 000)
+#define READ32BE(S)                             \
+  ((uint32_t)((unsigned char *)(S))[0] << 030 | \
+   (uint32_t)((unsigned char *)(S))[1] << 020 | \
+   (uint32_t)((unsigned char *)(S))[2] << 010 | \
+   (uint32_t)((unsigned char *)(S))[3] << 000)
+#define READ64BE(S)                             \
+  ((uint64_t)((unsigned char *)(S))[0] << 070 | \
+   (uint64_t)((unsigned char *)(S))[1] << 060 | \
+   (uint64_t)((unsigned char *)(S))[2] << 050 | \
+   (uint64_t)((unsigned char *)(S))[3] << 040 | \
+   (uint64_t)((unsigned char *)(S))[4] << 030 | \
+   (uint64_t)((unsigned char *)(S))[5] << 020 | \
+   (uint64_t)((unsigned char *)(S))[6] << 010 | \
+   (uint64_t)((unsigned char *)(S))[7] << 000)
+
+#define WRITE16LE(P, V)             \
+  do {                              \
+    uint8_t *Ple = (uint8_t *)(P);  \
+    uint16_t Vle = (V);             \
+    Ple[0] = (uint8_t)(Vle >> 000); \
+    Ple[1] = (uint8_t)(Vle >> 010); \
+  } while (0)
+#define WRITE32LE(P, V)             \
+  do {                              \
+    uint8_t *Ple = (uint8_t *)(P);  \
+    uint32_t Vle = (V);             \
+    Ple[0] = (uint8_t)(Vle >> 000); \
+    Ple[1] = (uint8_t)(Vle >> 010); \
+    Ple[2] = (uint8_t)(Vle >> 020); \
+    Ple[3] = (uint8_t)(Vle >> 030); \
+  } while (0)
+#define WRITE64LE(P, V)             \
+  do {                              \
+    uint8_t *Ple = (uint8_t *)(P);  \
+    uint64_t Vle = (V);             \
+    Ple[0] = (uint8_t)(Vle >> 000); \
+    Ple[1] = (uint8_t)(Vle >> 010); \
+    Ple[2] = (uint8_t)(Vle >> 020); \
+    Ple[3] = (uint8_t)(Vle >> 030); \
+    Ple[4] = (uint8_t)(Vle >> 040); \
+    Ple[5] = (uint8_t)(Vle >> 050); \
+    Ple[6] = (uint8_t)(Vle >> 060); \
+    Ple[7] = (uint8_t)(Vle >> 070); \
+  } while (0)
+
+#define WRITE16BE(P, V)             \
+  do {                              \
+    uint8_t *Ple = (uint8_t *)(P);  \
+    uint16_t Vle = (V);             \
+    Ple[1] = (uint8_t)(Vle >> 000); \
+    Ple[0] = (uint8_t)(Vle >> 010); \
+  } while (0)
+#define WRITE32BE(P, V)             \
+  do {                              \
+    uint8_t *Ple = (uint8_t *)(P);  \
+    uint32_t Vle = (V);             \
+    Ple[3] = (uint8_t)(Vle >> 000); \
+    Ple[2] = (uint8_t)(Vle >> 010); \
+    Ple[1] = (uint8_t)(Vle >> 020); \
+    Ple[0] = (uint8_t)(Vle >> 030); \
+  } while (0)
+#define WRITE64BE(P, V)             \
+  do {                              \
+    uint8_t *Ple = (uint8_t *)(P);  \
+    uint64_t Vle = (V);             \
+    Ple[7] = (uint8_t)(Vle >> 000); \
+    Ple[6] = (uint8_t)(Vle >> 010); \
+    Ple[5] = (uint8_t)(Vle >> 020); \
+    Ple[4] = (uint8_t)(Vle >> 030); \
+    Ple[3] = (uint8_t)(Vle >> 040); \
+    Ple[2] = (uint8_t)(Vle >> 050); \
+    Ple[1] = (uint8_t)(Vle >> 060); \
+    Ple[0] = (uint8_t)(Vle >> 070); \
+  } while (0)
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § bits » some assembly required                             ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+
+/*
+ * Constraints for virtual machine flags.
+ * @note we beseech clang devs for flag constraints
+ */
+#ifdef __GCC_ASM_FLAG_OUTPUTS__ /* GCC6+ CLANG10+ */
+#define CFLAG_CONSTRAINT  "=@ccc"
+#define CFLAG_ASM(OP)     OP
+#define ZFLAG_CONSTRAINT  "=@ccz"
+#define ZFLAG_ASM(OP)     OP
+#define OFLAG_CONSTRAINT  "=@cco"
+#define OFLAG_ASM(OP)     OP
+#define SFLAG_CONSTRAINT  "=@ccs"
+#define SFLAG_ASM(SP)     SP
+#define ABOVE_CONSTRAINT  "=@cca" /* i.e. !ZF && !CF */
+#define ABOVEFLAG_ASM(OP) OP
+#else
+#define CFLAG_CONSTRAINT  "=q"
+#define CFLAG_ASM(OP)     OP "\n\tsetc\t%b0"
+#define ZFLAG_CONSTRAINT  "=q"
+#define ZFLAG_ASM(OP)     OP "\n\tsetz\t%b0"
+#define OFLAG_CONSTRAINT  "=q"
+#define OFLAG_ASM(OP)     OP "\n\tseto\t%b0"
+#define SFLAG_CONSTRAINT  "=q"
+#define SFLAG_ASM(SP)     OP "\n\tsets\t%b0"
+#define ABOVE_CONSTRAINT  "=@cca"
+#define ABOVEFLAG_ASM(OP) OP "\n\tseta\t%b0"
+#endif
+
+/**
+ * Reads scalar from memory w/ one operation.
+ *
+ * @param MEM is alignas(𝑘) uint𝑘_t[hasatleast 1] where 𝑘 ∈ {8,16,32,64}
+ * @return *(MEM)
+ * @note defeats compiler load tearing optimizations
+ * @note alignas(𝑘) is implied if compiler knows type
+ * @note alignas(𝑘) only avoids multi-core / cross-page edge cases
+ * @see Intel's Six-Thousand Page Manual V.3A §8.2.3.1
+ * @see atomic_store()
+ */
+#define atomic_load(MEM)                       \
+  ({                                           \
+    autotype(MEM) Mem = (MEM);                 \
+    typeof(*Mem) Reg;                          \
+    asm("mov\t%1,%0" : "=r"(Reg) : "m"(*Mem)); \
+    Reg;                                       \
+  })
+
+/**
+ * Saves scalar to memory w/ one operation.
+ *
+ * This is guaranteed to happen in either one or zero operations,
+ * depending on whether or not it's possible for *(MEM) to be read
+ * afterwards. This macro only forbids compiler from using >1 ops.
+ *
+ * @param MEM is alignas(𝑘) uint𝑘_t[hasatleast 1] where 𝑘 ∈ {8,16,32,64}
+ * @param VAL is uint𝑘_t w/ better encoding for immediates (constexpr)
+ * @return VAL
+ * @note alignas(𝑘) on nexgen32e only needed for end of page gotcha
+ * @note alignas(𝑘) is implied if compiler knows type
+ * @note needed to defeat store tearing optimizations
+ * @see Intel Six-Thousand Page Manual Manual V.3A §8.2.3.1
+ * @see atomic_load()
+ */
+#define atomic_store(MEM, VAL)                    \
+  ({                                              \
+    autotype(VAL) Val = (VAL);                    \
+    typeof(&Val) Mem = (MEM);                     \
+    asm("mov%z1\t%1,%0" : "=m"(*Mem) : "r"(Val)); \
+    Val;                                          \
+  })
+
+#define bts(MEM, BIT)     __BitOp("bts", BIT, MEM) /** bit test and set */
+#define btr(MEM, BIT)     __BitOp("btr", BIT, MEM) /** bit test and reset */
+#define btc(MEM, BIT)     __BitOp("btc", BIT, MEM) /** bit test and complement */
+#define lockbts(MEM, BIT) __BitOp("lock bts", BIT, MEM)
+#define lockbtr(MEM, BIT) __BitOp("lock btr", BIT, MEM)
+#define lockbtc(MEM, BIT) __BitOp("lock btc", BIT, MEM)
+
+#define lockinc(MEM) __ArithmeticOp1("lock inc", MEM)
+#define lockdec(MEM) __ArithmeticOp1("lock dec", MEM)
+#define locknot(MEM) __ArithmeticOp1("lock not", MEM)
+#define lockneg(MEM) __ArithmeticOp1("lock neg", MEM)
+
+#define lockaddeq(MEM, VAL) __ArithmeticOp2("lock add", VAL, MEM)
+#define locksubeq(MEM, VAL) __ArithmeticOp2("lock sub", VAL, MEM)
+#define lockxoreq(MEM, VAL) __ArithmeticOp2("lock xor", VAL, MEM)
+#define lockandeq(MEM, VAL) __ArithmeticOp2("lock and", VAL, MEM)
+#define lockoreq(MEM, VAL)  __ArithmeticOp2("lock or", VAL, MEM)
+
+/**
+ * Exchanges *MEMORY into *LOCALVAR w/ one operation.
+ *
+ * @param MEMORY is uint𝑘_t[hasatleast 1] where 𝑘 ∈ {8,16,32,64}
+ * @param LOCALVAR is uint𝑘_t[hasatleast 1]
+ * @return LOCALVAR[0]
+ * @see xchg()
+ */
+#define lockxchg(MEMORY, LOCALVAR)                            \
+  ({                                                          \
+    asm("xchg\t%0,%1" : "+%m"(*(MEMORY)), "+r"(*(LOCALVAR))); \
+    *(LOCALVAR);                                              \
+  })
+
+/**
+ * Compares and exchanges.
+ *
+ * @param IFTHING is uint𝑘_t[hasatleast 1] where 𝑘 ∈ {8,16,32,64}
+ * @return true if value was exchanged, otherwise false
+ * @see lockcmpxchg()
+ */
+#define cmpxchg(IFTHING, ISEQUALTOME, REPLACEITWITHME)                        \
+  ({                                                                          \
+    bool DidIt;                                                               \
+    autotype(IFTHING) IfThing = (IFTHING);                                    \
+    typeof(*IfThing) IsEqualToMe = (ISEQUALTOME);                             \
+    typeof(*IfThing) ReplaceItWithMe = (REPLACEITWITHME);                     \
+    asm volatile(ZFLAG_ASM("cmpxchg\t%3,%1")                                  \
+                 : ZFLAG_CONSTRAINT(DidIt), "+m"(*IfThing), "+a"(IsEqualToMe) \
+                 : "r"(ReplaceItWithMe)                                       \
+                 : "cc");                                                     \
+    DidIt;                                                                    \
+  })
+
+/**
+ * Compares and exchanges w/ one operation.
+ *
+ * @param IFTHING is uint𝑘_t[hasatleast 1] where 𝑘 ∈ {8,16,32,64}
+ * @return true if value was exchanged, otherwise false
+ * @see lockcmpxchg()
+ */
+#define lockcmpxchg(IFTHING, ISEQUALTOME, REPLACEITWITHME)                    \
+  ({                                                                          \
+    bool DidIt;                                                               \
+    autotype(IFTHING) IfThing = (IFTHING);                                    \
+    typeof(*IfThing) IsEqualToMe = (ISEQUALTOME);                             \
+    typeof(*IfThing) ReplaceItWithMe = (REPLACEITWITHME);                     \
+    asm volatile(ZFLAG_ASM("lock cmpxchg\t%3,%1")                             \
+                 : ZFLAG_CONSTRAINT(DidIt), "+m"(*IfThing), "+a"(IsEqualToMe) \
+                 : "r"(ReplaceItWithMe)                                       \
+                 : "cc");                                                     \
+    DidIt;                                                                    \
+  })
+
+#define IsAddressCanonicalForm(P)                             \
+  ({                                                          \
+    intptr_t p2 = (intptr_t)(P);                              \
+    (0xffff800000000000l <= p2 && p2 <= 0x00007fffffffffffl); \
+  })
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § bits » implementation details                             ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define __ArithmeticOp1(OP, MEM)                               \
+  ({                                                           \
+    asm(OP "%z0\t%0" : "+m"(*(MEM)) : /* no inputs */ : "cc"); \
+    MEM;                                                       \
+  })
+
+#define __ArithmeticOp2(OP, VAL, MEM)                          \
+  ({                                                           \
+    asm(OP "%z0\t%1,%0" : "+m,m"(*(MEM)) : "i,r"(VAL) : "cc"); \
+    MEM;                                                       \
+  })
+
+#define __BitOp(OP, BIT, MEM)                                  \
+  ({                                                           \
+    bool OldBit;                                               \
+    if (__builtin_constant_p(BIT)) {                           \
+      asm(CFLAG_ASM(OP "%z1\t%2,%1")                           \
+          : CFLAG_CONSTRAINT(OldBit),                          \
+            "+m"((MEM)[(BIT) / (sizeof((MEM)[0]) * CHAR_BIT)]) \
+          : "J"((BIT) % (sizeof((MEM)[0]) * CHAR_BIT))         \
+          : "cc");                                             \
+    } else if (sizeof((MEM)[0]) == 2) {                        \
+      asm(CFLAG_ASM(OP "\t%w2,%1")                             \
+          : CFLAG_CONSTRAINT(OldBit), "+m"((MEM)[0])           \
+          : "r"(BIT)                                           \
+          : "cc");                                             \
+    } else if (sizeof((MEM)[0]) == 4) {                        \
+      asm(CFLAG_ASM(OP "\t%k2,%1")                             \
+          : CFLAG_CONSTRAINT(OldBit), "+m"((MEM)[0])           \
+          : "r"(BIT)                                           \
+          : "cc");                                             \
+    } else if (sizeof((MEM)[0]) == 8) {                        \
+      asm(CFLAG_ASM(OP "\t%q2,%1")                             \
+          : CFLAG_CONSTRAINT(OldBit), "+m"((MEM)[0])           \
+          : "r"(BIT)                                           \
+          : "cc");                                             \
+    }                                                          \
+    OldBit;                                                    \
+  })
+
+#else
+#define cmpxchg(MEM, CMP, VAL) \
+  cmpxchg(MEM, (intptr_t)(CMP), (intptr_t)(VAL), sizeof(*(MEM)))
+#define lockcmpxchg(MEM, CMP, VAL) \
+  lockcmpxchg(MEM, (intptr_t)(CMP), (intptr_t)(VAL), sizeof(*(MEM)))
+#define lockxchg(MEM, VAR) \
+  lockxchg(MEM, VAR, sizeof(*(MEM)) / (sizeof(*(MEM)) == sizeof(*(VAR))))
+#define atomic_store(MEM, VAL) \
+  atomic_store(MEM, VAL, sizeof(*(MEM)) / (sizeof(*(MEM)) == sizeof(*(VAL))))
+#define atomic_load(MEM) atomic_load(MEM, sizeof(*(MEM)))
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/str/str.h */
+
+#define COSMOPOLITAN_LIBC_STR_STR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § characters » asa x3.4-1967                                ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+  fourth age telecommunications */
+
+extern const uint8_t gperf_downcase[256];
+extern const uint8_t kToLower[256];
+extern const uint16_t kToLower16[256];
+extern const uint8_t kBase36[256];
+extern const char16_t kCp437[256];
+
+int isascii(int);
+int isspace(int);
+int isalpha(int);
+int isdigit(int);
+int isalnum(int);
+int isxdigit(int);
+int isprint(int);
+int islower(int);
+int isupper(int);
+int isblank(int);
+int iscntrl(int);
+int isgraph(int);
+int tolower(int);
+int ispunct(int);
+int toupper(int);
+int hextoint(int);
+int cescapec(int);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § characters » thompson-pike encoding                       ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+  fifth age telecommunications
+
+      0123456789abcdef
+    ┌0─ ☺☻♥♦♣♠•◘○◙♂♀♪♫☼┬───Control
+    └1─►◄↕‼¶§▬↨↑↓→←∟↔▲▼┘
+    ┌2─ !"#$%&'()*+,-./┐
+    │3 0123456789:;<=>?│
+    │4 @ABCDEFGHIJKLMNO├───ASA x3.4-1967
+    │5 PQRSTUVWXYZ[\]^_│
+    │6 `abcdefghijklmno│
+    └7─pqrstuvwxyz{|}~⌂┘
+    ┌8─ÇüéâäàåçêëèïîìÄÅ┐
+    │9 ÉæÆôöòûùÿÖÜ¢£¥€ƒ├───Thompson-Pike Continuation
+    │a á¡óúñѪº¿⌐¬½¼¡«»│    (not really characters)
+    └b─░▒▓│┤╡╢╖╕╣║╗╝╜╛┐┘
+    ┌c─└┴┬├─┼╞╟╚╔╩╦╠═╬╧┬───1 Continuation will follow
+    └d─╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀┘
+    ─e─αßΓπΣσμτΦΘΩδ∞φε∩────2 Continuations will follow
+     f─≡±≥≤⌠⌡÷≈°∙·√ⁿ²■λ
+       │      ││  │││└┤
+       │      ││  │└┤ └───5 Continuations follow (and is negative)
+       │      │└─┬┘ └─────5 Continuations follow (note: -1=λ┐┐┐┐┐)
+       └───┬──┘  └────────4 Continuations follow
+           └──────────────3 Continuations follow */
+
+#define INVALID_CODEPOINT 0xfffd
+
+int iswalnum(wint_t);
+int iswalpha(wint_t);
+int iswblank(wint_t);
+int iswcntrl(wint_t);
+int iswdigit(wint_t);
+int iswgraph(wint_t);
+int iswlower(wint_t);
+int iswspace(wint_t);
+int iswupper(wint_t);
+int iswxdigit(wint_t);
+int iswpunct(wint_t);
+int iswprint(wint_t);
+wint_t towlower(wint_t);
+wint_t towupper(wint_t);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § strings                                                   ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+void *memset(void *, int, size_t) memcpyesque;
+void *memcpy(void *restrict, const void *restrict, size_t) memcpyesque;
+void *mempcpy(void *restrict, const void *restrict, size_t) memcpyesque;
+void *memccpy(void *restrict, const void *restrict, int, size_t) memcpyesque;
+void *memmove(void *, const void *, size_t) memcpyesque;
+void *memeqmask(void *, const void *, const void *, size_t) memcpyesque;
+
+size_t strlen(const char *) strlenesque;
+size_t strnlen(const char *, size_t) strlenesque;
+size_t strnlen_s(const char *, size_t);
+char *strchr(const char *, int) strlenesque;
+char *index(const char *, int) strlenesque;
+void *memchr(const void *, int, size_t) strlenesque;
+char *strchrnul(const char *, int) strlenesque returnsnonnull;
+void *rawmemchr(const void *, int) strlenesque returnsnonnull;
+void bzero(void *, size_t) paramsnonnull() libcesque;
+void explicit_bzero(void *, size_t) paramsnonnull() libcesque;
+size_t strlen16(const char16_t *) strlenesque;
+size_t strnlen16(const char16_t *, size_t) strlenesque;
+size_t strnlen16_s(const char16_t *, size_t);
+char16_t *strchr16(const char16_t *, int) strlenesque;
+void *memchr16(const void *, int, size_t) strlenesque;
+char16_t *strchrnul16(const char16_t *, int) strlenesque returnsnonnull;
+void *rawmemchr16(const void *, int) strlenesque returnsnonnull;
+size_t wcslen(const wchar_t *) strlenesque;
+size_t wcsnlen(const wchar_t *, size_t) strlenesque;
+size_t wcsnlen_s(const wchar_t *, size_t);
+wchar_t *wcschr(const wchar_t *, wchar_t) strlenesque;
+wchar_t *wmemchr(const wchar_t *, wchar_t, size_t) strlenesque;
+wchar_t *wcschrnul(const wchar_t *, wchar_t) strlenesque returnsnonnull;
+char *strstr(const char *, const char *) strlenesque;
+char16_t *strstr16(const char16_t *, const char16_t *) strlenesque;
+wchar_t *wcsstr(const wchar_t *, const wchar_t *) strlenesque;
+void *rawwmemchr(const void *, wchar_t) strlenesque returnsnonnull;
+int memcmp(const void *, const void *, size_t) strlenesque;
+int strcmp(const char *, const char *) strlenesque;
+int strncmp(const char *, const char *, size_t) strlenesque;
+int strcmp16(const char16_t *, const char16_t *) strlenesque;
+int strncmp16(const char16_t *, const char16_t *, size_t) strlenesque;
+int wcscmp(const wchar_t *, const wchar_t *) strlenesque;
+int wcsncmp(const wchar_t *, const wchar_t *, size_t) strlenesque;
+int wmemcmp(const wchar_t *, const wchar_t *, size_t) strlenesque;
+int strcasecmp(const char *, const char *) strlenesque;
+int memcasecmp(const void *, const void *, size_t) strlenesque;
+int strcasecmp16(const char16_t *, const char16_t *) strlenesque;
+int wcscasecmp(const wchar_t *, const wchar_t *) strlenesque;
+int strncasecmp(const char *, const char *, size_t) strlenesque;
+int strncasecmp16(const char16_t *, const char16_t *, size_t) strlenesque;
+int wcsncasecmp(const wchar_t *, const wchar_t *, size_t) strlenesque;
+char *strrchr(const char *, int) strlenesque;
+void *memrchr(const void *, int, size_t) strlenesque;
+char16_t *strrchr16(const char16_t *, int) strlenesque;
+void *memrchr16(const void *, int, size_t) strlenesque;
+wchar_t *wcsrchr(const wchar_t *, int) strlenesque;
+void *wmemrchr(const void *, wchar_t, size_t) strlenesque;
+char *strpbrk(const char *, const char *) strlenesque;
+char16_t *strpbrk16(const char16_t *, const char16_t *) strlenesque;
+wchar_t *wcspbrk(const wchar_t *, const wchar_t *) strlenesque;
+size_t strspn(const char *, const char *) strlenesque;
+size_t strspn16(const char16_t *, const char16_t *) strlenesque;
+size_t wcsspn(const wchar_t *, const wchar_t *) strlenesque;
+size_t strcspn(const char *, const char *) strlenesque;
+size_t strcspn16(const char16_t *, const char16_t *) strlenesque;
+size_t wcscspn(const wchar_t *, const wchar_t *) strlenesque;
+void *memfrob(void *, size_t) memcpyesque;
+int strcoll(const char *, const char *) strlenesque;
+char *strsep(char **, const char *) paramsnonnull();
+int strcmpzbw(const uint16_t *, const char *) strlenesque;
+int strcasecmpzbw(const uint16_t *, const char *) strlenesque;
+char *stpcpy(char *, const char *) memcpyesque;
+char *stpncpy(char *, const char *, size_t) memcpyesque;
+char *strcat(char *, const char *) memcpyesque;
+char16_t *strcat16(char16_t *, const char16_t *) memcpyesque;
+wchar_t *wcscat(wchar_t *, const wchar_t *) memcpyesque;
+size_t strlcpy(char *, const char *, size_t);
+size_t strlcat(char *, const char *, size_t);
+char *strcpy(char *, const char *) memcpyesque;
+char16_t *strcpy16(char16_t *, const char16_t *) memcpyesque;
+wchar_t *wcscpy(wchar_t *, const wchar_t *) memcpyesque;
+char *strncat(char *, const char *, size_t) memcpyesque;
+char *strncpy(char *, const char *, size_t) memcpyesque;
+char *strtok(char *, const char *) paramsnonnull((2)) libcesque;
+char *strtok_r(char *, const char *, char **) paramsnonnull((2, 3));
+uint16_t *strcpyzbw(uint16_t *, const char *) memcpyesque;
+char *wstrtrunc(uint16_t *) memcpyesque;
+char *wstrntrunc(uint16_t *, size_t) memcpyesque;
+bool startswith(const char *, const char *) strlenesque;
+bool startswith16(const char16_t *, const char16_t *) strlenesque;
+bool wcsstartswith(const wchar_t *, const wchar_t *) strlenesque;
+bool endswith(const char *, const char *) strlenesque;
+bool endswith16(const char16_t *, const char16_t *) strlenesque;
+bool wcsendswith(const wchar_t *, const wchar_t *) strlenesque;
+const char *IndexDoubleNulString(const char *, unsigned) strlenesque;
+int strverscmp(const char *, const char *);
+wchar_t *wmemset(wchar_t *, wchar_t, size_t) memcpyesque;
+char16_t *memset16(char16_t *, char16_t, size_t) memcpyesque;
+compatfn wchar_t *wmemcpy(wchar_t *, const wchar_t *, size_t) memcpyesque;
+compatfn wchar_t *wmempcpy(wchar_t *, const wchar_t *, size_t) memcpyesque;
+compatfn wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t) memcpyesque;
+int timingsafe_memcmp(const void *, const void *, size_t);
+void *tinymemccpy(void *, const void *, int, size_t) memcpyesque;
+void *memmem(const void *, size_t, const void *, size_t)
+    paramsnonnull() nothrow nocallback nosideeffect;
+char *strerror(int) returnsnonnull nothrow nocallback;
+long a64l(const char *);
+char *l64a(long);
+
+char *strntolower(char *, size_t);
+char *strtolower(char *) paramsnonnull();
+char *strntoupper(char *, size_t);
+char *strtoupper(char *) paramsnonnull();
+char *chomp(char *);
+char16_t *chomp16(char16_t *);
+wchar_t *wchomp(wchar_t *);
+
+bool escapedos(char16_t *, unsigned, const char16_t *, unsigned);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § strings » multibyte                                       ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+typedef unsigned mbstate_t;
+
+axdx_t tprecode8to16(char16_t *, size_t, const char *);
+axdx_t tprecode16to8(char *, size_t, const char16_t *);
+int strcmp8to16(const char *, const char16_t *) strlenesque;
+int strncmp8to16(const char *, const char16_t *, size_t) strlenesque;
+int strcasecmp8to16(const char *, const char16_t *) strlenesque;
+int strncasecmp8to16(const char *, const char16_t *, size_t) strlenesque;
+int strcmp16to8(const char16_t *, const char *) strlenesque;
+int strncmp16to8(const char16_t *, const char *, size_t) strlenesque;
+int strcasecmp16to8(const char16_t *, const char *) strlenesque;
+int strncasecmp16to8(const char16_t *, const char *, size_t) strlenesque;
+wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t);
+int mbtowc(wchar_t *, const char *, size_t);
+size_t mbrtowc(wchar_t *, const char *, size_t, mbstate_t *);
+size_t mbsrtowcs(wchar_t *, const char **, size_t, mbstate_t *);
+size_t mbstowcs(wchar_t *, const char *, size_t);
+size_t wcrtomb(char *, wchar_t, mbstate_t *);
+size_t c32rtomb(char *, char32_t, mbstate_t *);
+size_t mbrtoc32(char32_t *, const char *, size_t, mbstate_t *);
+size_t c16rtomb(char *, char16_t, mbstate_t *);
+size_t mbrtoc16(char16_t *, const char *, size_t, mbstate_t *);
+size_t mbrlen(const char *, size_t, mbstate_t *);
+size_t mbsnrtowcs(wchar_t *, const char **, size_t, size_t, mbstate_t *);
+size_t wcsnrtombs(char *, const wchar_t **, size_t, size_t, mbstate_t *);
+size_t wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *);
+size_t wcstombs(char *, const wchar_t *, size_t);
+int mbsinit(const mbstate_t *);
+int mblen(const char *, size_t);
+int wctomb(char *, wchar_t);
+int wctob(wint_t);
+wint_t btowc(int);
+
+size_t strclen(const char *) nosideeffect;
+size_t strnclen(const char *, size_t) nosideeffect;
+size_t strclen16(const char16_t *) nosideeffect;
+size_t strnclen16(const char16_t *, size_t) nosideeffect;
+
+typedef unsigned wctype_t;
+wctype_t wctype(const char *) strlenesque;
+int iswctype(wint_t, wctype_t) pureconst;
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § strings » system                                          ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+char *strsignal(int) returnsnonnull libcesque;
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § strings » optimizations                                   ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define __memcpy_isgoodsize(SIZE)                                    \
+  (__builtin_constant_p(SIZE) && ((SIZE) <= __BIGGEST_ALIGNMENT__ && \
+                                  __builtin_popcountl((unsigned)(SIZE)) == 1))
+
+#define __memset_isgoodsize(SIZE)                   \
+  (__builtin_constant_p(SIZE) &&                    \
+   (((SIZE) <= __BIGGEST_ALIGNMENT__ &&             \
+     __builtin_popcountl((unsigned)(SIZE)) == 1) || \
+    ((SIZE) % __BIGGEST_ALIGNMENT__ == 0 &&         \
+     (SIZE) / __BIGGEST_ALIGNMENT__ <= 3)))
+
+#define memcpy(DEST, SRC, SIZE)                                  \
+  (__memcpy_isgoodsize(SIZE) ? __builtin_memcpy(DEST, SRC, SIZE) \
+                             : __memcpy("MemCpy", DEST, SRC, SIZE))
+
+#define memset(DEST, BYTE, SIZE)                                  \
+  (__memset_isgoodsize(SIZE) ? __builtin_memset(DEST, BYTE, SIZE) \
+                             : __memset(DEST, BYTE, SIZE))
+
+#if defined(__STDC_HOSTED__) && defined(__SSE2__)
+
+#define strlen(STR)                                       \
+  (__builtin_constant_p(STR) ? __builtin_strlen(STR) : ({ \
+    size_t LeN;                                           \
+    const char *StR = (STR);                              \
+    asm("call\tstrlen"                                    \
+        : "=a"(LeN)                                       \
+        : "D"(StR), "m"(*(char(*)[0x7fffffff])StR)        \
+        : "rcx", "rdx", "xmm3", "xmm4", "cc");            \
+    LeN;                                                  \
+  }))
+
+#define memmove(DEST, SRC, SIZE) __memcpy("MemMove", (DEST), (SRC), (SIZE))
+
+#define mempcpy(DEST, SRC, SIZE)                          \
+  ({                                                      \
+    size_t SIze = (SIZE);                                 \
+    (void *)((char *)memcpy((DEST), (SRC), SIze) + SIze); \
+  })
+
+#define __memcpy(FN, DEST, SRC, SIZE)                                      \
+  ({                                                                       \
+    void *DeSt = (DEST);                                                   \
+    const void *SrC = (SRC);                                               \
+    size_t SiZe = (SIZE);                                                  \
+    asm("call\t" FN                                                        \
+        : "=m"(*(char(*)[SiZe])(DeSt))                                     \
+        : "D"(DeSt), "S"(SrC), "d"(SiZe), "m"(*(const char(*)[SiZe])(SrC)) \
+        : "xmm3", "xmm4", "rcx", "cc");                                    \
+    DeSt;                                                                  \
+  })
+
+#define __memset(DEST, BYTE, SIZE)        \
+  ({                                      \
+    void *DeSt = (DEST);                  \
+    size_t SiZe = (SIZE);                 \
+    asm("call\tMemSet"                    \
+        : "=m"(*(char(*)[SiZe])(DeSt))    \
+        : "D"(DeSt), "S"(BYTE), "d"(SiZe) \
+        : "xmm3", "xmm4", "rcx", "cc");   \
+    DeSt;                                 \
+  })
+
+#define explicit_bzero(STR, BYTES)                                          \
+  do {                                                                      \
+    void *Str;                                                              \
+    size_t Bytes;                                                           \
+    asm volatile("call\texplicit_bzero"                                     \
+                 : "=D"(Str), "=S"(Bytes)                                   \
+                 : "0"(STR), "1"(BYTES)                                     \
+                 : "rax", "rcx", "rdx", "r8", "r9", "r10", "r11", "memory", \
+                   "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5");   \
+  } while (0)
+
+#else /* hosted+sse2 */
+
+#define mempcpy(DEST, SRC, SIZE)                                           \
+  ({                                                                       \
+    void *Rdi, *Dest = (DEST);                                             \
+    const void *Rsi, *Src = (SRC);                                         \
+    size_t SiZe = (SIZE);                                                  \
+    size_t Rcx;                                                            \
+    asm("rep movsb"                                                        \
+        : "=D"(Rdi), "=S"(Rsi), "=c"(Rcx), "=m"(*(char(*)[SiZe])(Dest))    \
+        : "0"(Dest), "1"(Src), "2"(SiZe), "m"(*(const char(*)[SiZe])(Src)) \
+        : "cc");                                                           \
+    Rdi;                                                                   \
+  })
+
+#define __memcpy(FN, DEST, SRC, SIZE)                                      \
+  ({                                                                       \
+    void *Rdi, *Dest = (DEST);                                             \
+    const void *Rsi, *Src = (SRC);                                         \
+    size_t SiZe = (SIZE);                                                  \
+    size_t Rcx;                                                            \
+    asm("rep movsb"                                                        \
+        : "=D"(Rdi), "=S"(Rsi), "=c"(Rcx), "=m"(*(char(*)[SiZe])(Dest))    \
+        : "0"(Dest), "1"(Src), "2"(SiZe), "m"(*(const char(*)[SiZe])(Src)) \
+        : "cc");                                                           \
+    Dest;                                                                  \
+  })
+
+#define __memset(DEST, BYTE, SIZE)                           \
+  ({                                                         \
+    void *Rdi, *Dest = (DEST);                               \
+    size_t SiZe = (SIZE);                                    \
+    size_t Rcx;                                              \
+    asm("rep stosb"                                          \
+        : "=D"(Rdi), "=c"(Rcx), "=m"(*(char(*)[SiZe])(Dest)) \
+        : "0"(Dest), "1"(SiZe), "a"(BYTE)                    \
+        : "cc");                                             \
+    Dest;                                                    \
+  })
+
+#endif /* hosted/sse2/unbloat */
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § strings » address sanitizer                               ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+void *memset_pure(void *, int, size_t) memcpyesque;
+void *memmove_pure(void *, const void *, size_t) memcpyesque;
+size_t strlen_pure(const char *) strlenesque;
+size_t strcspn_pure(const char *, const char *) strlenesque;
+#if defined(__FSANITIZE_ADDRESS__)
+
+#define strcspn(STR, REJECT) strcspn_pure(STR, REJECT)
+
+#undef strlen
+#define strlen(STR) \
+  (__builtin_constant_p(STR) ? __builtin_strlen(STR) : strlen_pure(STR))
+
+#undef memset
+#define memset(DST, CHAR, SIZE)                                  \
+  (__memcpy_isgoodsize(SIZE) ? __builtin_memset(DST, CHAR, SIZE) \
+                             : memset_pure(DST, CHAR, SIZE))
+
+#undef memmove
+#define memmove(DST, SRC, SIZE)                                  \
+  (__memcpy_isgoodsize(SIZE) ? __builtin_memmove(DST, SRC, SIZE) \
+                             : memmove_pure(DST, SRC, SIZE))
+
+#undef memcpy
+#define memcpy(DST, SRC, SIZE)                                  \
+  (__memcpy_isgoodsize(SIZE) ? __builtin_memcpy(DST, SRC, SIZE) \
+                             : memmove_pure(DST, SRC, SIZE))
+
+#undef mempcpy
+#define mempcpy(DST, SRC, SIZE)                                       \
+  (__memcpy_isgoodsize(SIZE) ? __builtin_mempcpy(DST, SRC, SIZE) : ({ \
+    void *DsT = (DST);                                                \
+    size_t SiZe = (SIZE);                                             \
+    memmove_pure(DsT, SRC, SiZe);                                     \
+    (void *)((char *)DsT + SiZe);                                     \
+  }))
+
+#endif /* __FSANITIZE_ADDRESS__ */
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+/**
+ * @fileoverview PKZIP Data Structures.
+ */
+
+#define kZipAlign 2
+
+#define kZipCosmopolitanVersion 20
+
+#define kZipOsDos         0
+#define kZipOsAmiga       1
+#define kZipOsOpenvms     2
+#define kZipOsUnix        3
+#define kZipOsVmcms       4
+#define kZipOsAtarist     5
+#define kZipOsOs2hpfs     6
+#define kZipOsMacintosh   7
+#define kZipOsZsystem     8
+#define kZipOsCpm         9
+#define kZipOsWindowsntfs 10
+#define kZipOsMvsos390zos 11
+#define kZipOsVse         12
+#define kZipOsAcornrisc   13
+#define kZipOsVfat        14
+#define kZipOsAltmvs      15
+#define kZipOsBeos        16
+#define kZipOsTandem      17
+#define kZipOsOs400       18
+#define kZipOsOsxdarwin   19
+
+#define kZipEra1989 10 /* PKZIP 1.0 */
+#define kZipEra1993 20 /* PKZIP 2.0: deflate/subdir/etc. support */
+#define kZipEra2001 45 /* PKZIP 4.5: kZipExtraZip64 support */
+
+#define kZipIattrBinary 0
+#define kZipIattrAscii  1
+
+#define kZipCompressionNone    0
+#define kZipCompressionDeflate 8
+
+#define kZipCdirHdrMagic   0x06054b50 /* PK♣♠ "PK\5\6" */
+#define kZipCdirHdrMinSize 22
+#define kZipCdirAlign      kZipAlign
+#define kZipCdirHdrLinkableSize \
+  ROUNDUP(kZipCfileHdrMinSize + PATH_MAX, kZipCdirAlign)
+
+#define kZipCfileHdrMagic                 0x02014b50 /* PK☺☻ "PK\1\2" */
+#define kZipCfileHdrMinSize               46
+#define kZipCfileOffsetGeneralflag        8
+#define kZipCfileOffsetCompressionmethod  10
+#define kZipCfileOffsetLastmodifiedtime   12
+#define kZipCfileOffsetLastmodifieddate   14
+#define kZipCfileOffsetCrc32              16
+#define kZipCfileOffsetCompressedsize     20
+#define kZipCfileOffsetUncompressedsize   24
+#define kZipCfileOffsetExternalattributes 38
+#define kZipCfileOffsetOffset             42
+
+#define kZipLfileHdrMagic                0x04034b50 /* PK♥♦ "PK\3\4" */
+#define kZipLfileHdrMinSize              30
+#define kZipLfileOffsetGeneralflag       6
+#define kZipLfileOffsetCompressionmethod 8
+#define kZipLfileOffsetLastmodifiedtime  10
+#define kZipLfileOffsetLastmodifieddate  12
+#define kZipLfileOffsetCrc32             14
+#define kZipLfileOffsetCompressedsize    18
+#define kZipLfileOffsetUncompressedsize  22
+
+#define kZipGflagUtf8 0x800
+
+#define kZipExtraHdrSize           4
+#define kZipExtraZip64             0x0001
+#define kZipExtraNtfs              0x000a
+#define kZipExtraExtendedTimestamp 0x5455
+
+#define kZipCfileMagic "PK\001\002"
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+/* end of central directory record */
+#define ZIP_CDIR_MAGIC(P)         READ32LE(P)
+#define ZIP_CDIR_DISK(P)          READ16LE((P) + 4)
+#define ZIP_CDIR_STARTINGDISK(P)  READ16LE((P) + 6)
+#define ZIP_CDIR_RECORDSONDISK(P) READ16LE((P) + 8)
+#define ZIP_CDIR_RECORDS(P)       READ16LE((P) + 10)
+#define ZIP_CDIR_SIZE(P)          READ32LE((P) + 12)
+#define ZIP_CDIR_OFFSET(P)        READ32LE((P) + 16)
+#define ZIP_CDIR_COMMENTSIZE(P)   READ16LE((P) + 20)
+#define ZIP_CDIR_COMMENT(P)       (&(P)[22])
+#define ZIP_CDIR_HDRSIZE(P)       (ZIP_CDIR_COMMENTSIZE(P) + kZipCdirHdrMinSize)
+
+/* central directory file header */
+#define ZIP_CFILE_MAGIC(P)          READ32LE(P)
+#define ZIP_CFILE_VERSIONMADE(P)    ((P)[4])
+#define ZIP_CFILE_FILEATTRCOMPAT(P) ((P)[5])
+#define ZIP_CFILE_VERSIONNEED(P)    ((P)[6])
+#define ZIP_CFILE_OSNEED(P)         ((P)[7])
+#define ZIP_CFILE_GENERALFLAG(P)    READ16LE((P) + kZipCfileOffsetGeneralflag)
+#define ZIP_CFILE_COMPRESSIONMETHOD(P) \
+  READ16LE((P) + kZipCfileOffsetCompressionmethod)
+#define ZIP_CFILE_LASTMODIFIEDTIME(P) \
+  READ16LE((P) + kZipCfileOffsetLastmodifiedtime) /* @see DOS_TIME() */
+#define ZIP_CFILE_LASTMODIFIEDDATE(P) \
+  READ16LE((P) + kZipCfileOffsetLastmodifieddate) /* @see DOS_DATE() */
+#define ZIP_CFILE_CRC32(P)          READ32LE((P) + kZipCfileOffsetCrc32)
+#define ZIP_CFILE_COMPRESSEDSIZE(P) READ32LE(P + kZipCfileOffsetCompressedsize)
+#define ZIP_CFILE_UNCOMPRESSEDSIZE(P) \
+  READ32LE((P) + kZipCfileOffsetUncompressedsize)
+#define ZIP_CFILE_NAMESIZE(P)           READ16LE((P) + 28)
+#define ZIP_CFILE_EXTRASIZE(P)          READ16LE((P) + 30)
+#define ZIP_CFILE_COMMENTSIZE(P)        READ16LE((P) + 32)
+#define ZIP_CFILE_DISK(P)               READ16LE((P) + 34)
+#define ZIP_CFILE_INTERNALATTRIBUTES(P) READ16LE((P) + 36)
+#define ZIP_CFILE_EXTERNALATTRIBUTES(P) \
+  READ32LE((P) + kZipCfileOffsetExternalattributes)
+#define ZIP_CFILE_OFFSET(P) READ32LE((P) + kZipCfileOffsetOffset)
+#define ZIP_CFILE_NAME(P)   ((const char *)(&(P)[46])) /* not nul-terminated */
+#define ZIP_CFILE_EXTRA(P)  (&(P)[46 + ZIP_CFILE_NAMESIZE(P)])
+#define ZIP_CFILE_COMMENT(P) \
+  (&(P)[46 + ZIP_CFILE_NAMESIZE(P) + ZIP_CFILE_EXTRASIZE(P)])
+#define ZIP_CFILE_HDRSIZE(P)                                                   \
+  (ZIP_CFILE_NAMESIZE(P) + ZIP_CFILE_EXTRASIZE(P) + ZIP_CFILE_COMMENTSIZE(P) + \
+   kZipCfileHdrMinSize)
+
+/* local file header */
+#define ZIP_LFILE_MAGIC(P)       READ32LE(P)
+#define ZIP_LFILE_VERSIONNEED(P) ((P)[4])
+#define ZIP_LFILE_OSNEED(P)      ((P)[5])
+#define ZIP_LFILE_GENERALFLAG(P) READ16LE((P) + kZipLfileOffsetGeneralflag)
+#define ZIP_LFILE_COMPRESSIONMETHOD(P) \
+  READ16LE((P) + kZipLfileOffsetCompressionmethod)
+#define ZIP_LFILE_LASTMODIFIEDTIME(P) \
+  READ16LE((P) + kZipLfileOffsetLastmodifiedtime) /* @see DOS_TIME() */
+#define ZIP_LFILE_LASTMODIFIEDDATE(P) \
+  READ16LE((P) + kZipLfileOffsetLastmodifieddate) /* @see DOS_DATE() */
+#define ZIP_LFILE_CRC32(P) READ32LE((P) + kZipLfileOffsetCrc32)
+#define ZIP_LFILE_COMPRESSEDSIZE(P) \
+  READ32LE((P) + kZipLfileOffsetCompressedsize)
+#define ZIP_LFILE_UNCOMPRESSEDSIZE(P) \
+  READ32LE((P) + kZipLfileOffsetUncompressedsize)
+#define ZIP_LFILE_NAMESIZE(P)  READ16LE((P) + 26)
+#define ZIP_LFILE_EXTRASIZE(P) READ16LE((P) + 28)
+#define ZIP_LFILE_NAME(P)      ((const char *)(&(P)[30]))
+#define ZIP_LFILE_EXTRA(P)     (&(P)[30 + ZIP_LFILE_NAMESIZE(P)])
+#define ZIP_LFILE_HDRSIZE(P) \
+  (ZIP_LFILE_NAMESIZE(P) + ZIP_LFILE_EXTRASIZE(P) + kZipLfileHdrMinSize)
+#define ZIP_LFILE_CONTENT(P) ((P) + ZIP_LFILE_HDRSIZE(P))
+#define ZIP_LFILE_SIZE(P)    (ZIP_LFILE_HDRSIZE(P) + ZIP_LFILE_COMPRESSEDSIZE(P))
+
+#define ZIP_EXTRA_HEADERID(P)    READ16LE(P)
+#define ZIP_EXTRA_CONTENTSIZE(P) READ16LE((P) + 2)
+#define ZIP_EXTRA_CONTENT(P)     (&(P)[4])
+#define ZIP_EXTRA_SIZE(P)        (ZIP_EXTRA_CONTENTSIZE(P) + kZipExtraHdrSize)
+
+uint8_t *zipfindcentraldir(const uint8_t *, size_t);
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/alg/alg.h */
+
+#define COSMOPOLITAN_LIBC_ALG_ALG_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § algorithms                                                ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+void *bsearch(const void *, const void *, size_t, size_t,
+              int cmp(const void *, const void *))
+    paramsnonnull() nothrow nosideeffect;
+void *bsearch_r(const void *, const void *, size_t, size_t,
+                int cmp(const void *, const void *, void *), void *)
+    paramsnonnull((1, 2, 5)) nothrow nosideeffect;
+void djbsort(int32_t *, size_t);
+void qsort(void *, size_t, size_t, int (*)(const void *, const void *))
+    paramsnonnull();
+void qsort_r(void *, size_t, size_t,
+             int cmp(const void *, const void *, void *), void *arg)
+    paramsnonnull((1, 4));
+int tarjan(int, const int (*)[2], int, int[], int[], int *)
+    paramsnonnull((2, 4)) nocallback nothrow;
+
+#define __algalloc returnspointerwithnoaliases nothrow nocallback nodiscard
+
+char *replacestr(const char *, const char *, const char *)
+    paramsnonnull() __algalloc;
+char16_t *replacestr16(const char16_t *, const char16_t *, const char16_t *)
+    paramsnonnull() __algalloc;
+wchar_t *replacewcs(const wchar_t *, const wchar_t *, const wchar_t *)
+    paramsnonnull() __algalloc;
+
+char *concatstr(const char *, ...) nullterminated() paramsnonnull() __algalloc;
+char16_t *concatstr16(const char16_t *, ...) nullterminated()
+    paramsnonnull() __algalloc;
+wchar_t *concatwcs(const wchar_t *, ...) nullterminated()
+    paramsnonnull() __algalloc;
+
+int cmpsb(const void *, const void *);
+int cmpub(const void *, const void *);
+int cmpsw(const void *, const void *);
+int cmpuw(const void *, const void *);
+int cmpsl(const void *, const void *);
+int cmpul(const void *, const void *);
+int cmpsq(const void *, const void *);
+int cmpuq(const void *, const void *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/alg/critbit0.h */
+
+#define COSMOPOLITAN_LIBC_ALG_CRITBIT0_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § data structures » critical bit tree (for c strings)       ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+struct critbit0 {
+  void *root;
+  size_t count;
+};
+
+bool critbit0_contains(struct critbit0 *, const char *) nothrow nosideeffect
+    paramsnonnull();
+bool critbit0_insert(struct critbit0 *, const char *) paramsnonnull();
+bool critbit0_delete(struct critbit0 *, const char *) nothrow paramsnonnull();
+void critbit0_clear(struct critbit0 *) nothrow paramsnonnull();
+char *critbit0_get(struct critbit0 *, const char *);
+intptr_t critbit0_allprefixed(struct critbit0 *, const char *,
+                              intptr_t (*)(const char *, void *), void *)
+    paramsnonnull((1, 2, 3)) nothrow;
+bool critbit0_emplace(struct critbit0 *, char *, size_t) paramsnonnull();
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/bits/atomic.h */
+
+#define COSMOPOLITAN_LIBC_BITS_ATOMIC_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/**
+ * @fileoverview C11 version of The Cosmopolitan Atomics Library.
+ *
+ *   - Forty-two different ways to say MOV.
+ *   - Fourteen different ways to say XCHG.
+ *   - Twenty different ways to say LOCK CMPXCHG.
+ *
+ * Living proof high-level languages can be lower-level than assembly.
+ */
+
+#define memory_order         int
+#define memory_order_relaxed 0
+#define memory_order_consume 1
+#define memory_order_acquire 2
+#define memory_order_release 3
+#define memory_order_acq_rel 4
+#define memory_order_seq_cst 5
+
+#define atomic_flag            struct AtomicFlag
+#define atomic_flag_clear(PTR) atomic_store((PTR)->__cacheline, 0)
+#define atomic_flag_test_and_set(PTR)        \
+  ({                                         \
+    uint32_t ax = 0;                         \
+    lockcmpxchg((PTR)->__cacheline, &ax, 1); \
+  })
+#define atomic_init(PTR, VAL)                         atomic_store(PTR, VAL)
+#define atomic_exchange(PTR, VAL)                     lockxchg(PTR, &(VAL))
+#define atomic_compare_exchange_strong(X, Y, Z)       lockcmpxchg(X, Y, Z)
+#define atomic_compare_exchange_weak(X, Y, Z)         lockcmpxchg(X, Y, Z)
+#define atomic_load_explicit(PTR, ORDER)              atomic_load(PTR)
+#define atomic_store_explicit(PTR, VAL, ORDER)        atomic_store(PTR, VAL)
+#define atomic_flag_clear_explicit(PTR, ORDER)        atomic_store(PTR, 0)
+#define atomic_exchange_explicit(PTR, VAL, ORDER)     lockxchg(PTR, &(VAL))
+#define atomic_flag_test_and_set_explicit(PTR, ORDER) lockcmpxchg(PTR, 0, 1)
+#define atomic_compare_exchange_strong_explicit(X, Y, Z, S, F) \
+  lockcmpxchg(X, Y, Z)
+#define atomic_compare_exchange_weak_explicit(X, Y, Z, S, F) \
+  lockcmpxchg(X, Y, Z)
+
+struct AtomicFlag {
+  uint32_t __cacheline[16]; /* Intel V.O §9.4.6 */
+} forcealign(64);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/bits/bswap.h */
+
+#define COSMOPOLITAN_LIBC_BITS_BSWAP_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+uint16_t bswap_16(uint16_t) pureconst;
+uint32_t bswap_32(uint32_t) pureconst;
+uint32_t bswap_64(uint32_t) pureconst;
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define bswap_16(x) __builtin_bswap16(x)
+#define bswap_32(x) __builtin_bswap32(x)
+#define bswap_64(x) __builtin_bswap64(x)
+#endif /* defined(__GNUC__) && !defined(__STRICT_ANSI__) */
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/bits/ezlea.h */
+
+#define COSMOPOLITAN_LIBC_BITS_EZLEA_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#if __pic__ + __pie__ + __code_model_medium__ + __code_model_large__ + 0 > 1
+#define ezlea(symbol) "lea\t" symbol "(%%rip),%"
+#else
+#define ezlea(symbol) "mov\t$" symbol ",%k"
+#endif
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/bits/hilbert.h */
+
+#define COSMOPOLITAN_LIBC_BITS_HILBERT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+long hilbert(long, long, long) pureconst;
+axdx_t unhilbert(long, long) pureconst;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/bits/likely.h */
+
+#define COSMOPOLITAN_LIBC_BITS_LIKELY_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define LIKELY(expr)   __builtin_expect(!!(expr), 1)
+#define UNLIKELY(expr) __builtin_expect(!!(expr), 0)
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/bits/morton.h */
+
+#define COSMOPOLITAN_LIBC_BITS_MORTON_H_
+
+
+/*!BEGIN libc/intrin/pdep.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PDEP_H_
+
+
+/*!BEGIN libc/nexgen32e/x86feature.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_X86FEATURE_H_
+
+
+/*!BEGIN libc/nexgen32e/x86compiler.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_X86COMPILER_H_
+
+/**
+ * @fileoverview x86 cpu feature compile-time requirement detection.
+ * @see -march=native, -mavx2, etc.
+ */
+
+#ifdef __AES__
+#define _X86_CC_AES 1
+#else
+#define _X86_CC_AES 0
+#endif
+
+#ifdef __AVX__
+#define _X86_CC_AVX 1
+#else
+#define _X86_CC_AVX 0
+#endif
+
+#ifdef __AVX2__
+#define _X86_CC_AVX2 1
+#else
+#define _X86_CC_AVX2 0
+#endif
+
+#ifdef __ABM__
+#define _X86_CC_ABM 1
+#else
+#define _X86_CC_ABM 0
+#endif
+
+#ifdef __BMI__
+#define _X86_CC_BMI 1
+#else
+#define _X86_CC_BMI 0
+#endif
+
+#ifdef __BMI2__
+#define _X86_CC_BMI2 1
+#else
+#define _X86_CC_BMI2 0
+#endif
+
+#ifdef __FMA__
+#define _X86_CC_FMA 1
+#else
+#define _X86_CC_FMA 0
+#endif
+
+#ifdef __ADX__
+#define _X86_CC_ADX 1
+#else
+#define _X86_CC_ADX 0
+#endif
+
+#ifdef __PCLMUL__
+#define _X86_CC_PCLMUL 1
+#else
+#define _X86_CC_PCLMUL 0
+#endif
+
+#ifdef __POPCNT__
+#define _X86_CC_POPCNT 1
+#else
+#define _X86_CC_POPCNT 0
+#endif
+
+#ifdef __RDRND__
+#define _X86_CC_RDRND 1
+#else
+#define _X86_CC_RDRND 0
+#endif
+
+#ifdef __RDSEED__
+#define _X86_CC_RDSEED 1
+#else
+#define _X86_CC_RDSEED 0
+#endif
+
+#ifdef __SHA__
+#define _X86_CC_SHA 1
+#else
+#define _X86_CC_SHA 0
+#endif
+
+#ifdef __SSSE3__
+#define _X86_CC_SSSE3 1
+#else
+#define _X86_CC_SSSE3 0
+#endif
+
+#ifdef __SSE__
+#define _X86_CC_SSE 1
+#else
+#define _X86_CC_SSE 0
+#endif
+
+#ifdef __SSE2__
+#define _X86_CC_SSE2 1
+#else
+#define _X86_CC_SSE2 0
+#endif
+
+#ifdef __SSE3__
+#define _X86_CC_SSE3 1
+#else
+#define _X86_CC_SSE3 0
+#endif
+
+#ifdef __SSE4_1__
+#define _X86_CC_SSE4_1 1
+#else
+#define _X86_CC_SSE4_1 0
+#endif
+
+#ifdef __SSE4_2__
+#define _X86_CC_SSE4_2 1
+#else
+#define _X86_CC_SSE4_2 0
+#endif
+
+#ifdef __XSAVE__
+#define _X86_CC_XSAVE 1
+#else
+#define _X86_CC_XSAVE 0
+#endif
+
+#ifdef __CLFLUSHOPT__
+#define _X86_CC_CLFLUSHOPT 1
+#else
+#define _X86_CC_CLFLUSHOPT 0
+#endif
+
+#ifdef __RDPID__
+#define _X86_CC_RDPID 1
+#else
+#define _X86_CC_RDPID 0
+#endif
+
+
+/**
+ * @fileoverview x86 cpu feature detection.
+ */
+
+#define X86_HAVE(FEATURE) _X86_HAVE(X86_##FEATURE)
+
+/* clang-format off */
+/*      --- FEATURE              LEAF       REG BIT  COMPILE-TIME-DEFINE  HOOK */
+#define X86_ACC                  1H,        EDX, 29, 0,                   _
+#define X86_ACPI                 1H,        EDX, 22, 0,                   _
+#define X86_ADX                  7H,        EBX, 19, _X86_CC_ADX,         _     /* broadwell c. 2014 */
+#define X86_AES                  1H,        ECX, 25, _X86_CC_AES,         _     /* westmere c. 2010 */
+#define X86_APIC                 1H,        EDX,  9, 0,                   _
+#define X86_ARCH_CAPABILITIES    7H,        EDX, 29, 0,                   _
+#define X86_AVX                  1H,        ECX, 28, _X86_CC_AVX,         _     /* sandybridge c. 2012 */
+#define X86_AVX2                 7H,        EBX,  5, _X86_CC_AVX2,        _     /* haswell c. 2013 */
+#define X86_AVX512BW             7H,        EBX, 30, 0,                   _
+#define X86_AVX512CD             7H,        EBX, 28, 0,                   _
+#define X86_AVX512DQ             7H,        EBX, 17, 0,                   _
+#define X86_AVX512ER             7H,        EBX, 27, 0,                   _
+#define X86_AVX512F              7H,        EBX, 16, 0,                   _
+#define X86_AVX512IFMA           7H,        EBX, 21, 0,                   _
+#define X86_AVX512PF             7H,        EBX, 26, 0,                   _
+#define X86_AVX512VBMI           7H,        ECX,  1, 0,                   _
+#define X86_AVX512VL             7H,        EBX, 31, 0,                   _
+#define X86_AVX512_4FMAPS        7H,        EDX,  3, 0,                   _
+#define X86_AVX512_4VNNIW        7H,        EDX,  2, 0,                   _
+#define X86_AVX512_BF16          7H,        EAX,  5, 0,                   _
+#define X86_AVX512_BITALG        7H,        ECX, 12, 0,                   _
+#define X86_AVX512_VBMI2         7H,        ECX,  6, 0,                   _
+#define X86_AVX512_VNNI          7H,        ECX, 11, 0,                   _
+#define X86_AVX512_VP2INTERSECT  7H,        EDX,  8, 0,                   _
+#define X86_AVX512_VPOPCNTDQ     7H,        ECX, 14, 0,                   _
+#define X86_BMI                  7H,        EBX,  3, _X86_CC_BMI,         _     /* haswell c. 2013 */
+#define X86_BMI2                 7H,        EBX,  8, _X86_CC_BMI2,        _     /* haswell c. 2013 */
+#define X86_CID                  1H,        ECX, 10, 0,                   _
+#define X86_CLDEMOTE             7H,        ECX, 25, 0,                   _
+#define X86_CLFLUSH              1H,        EDX, 19, _X86_CC_SSE2,        _
+#define X86_CLFLUSHOPT           7H,        EBX, 23, _X86_CC_CLFLUSHOPT,  _     /* skylake/zen  */
+#define X86_CLWB                 7H,        EBX, 24, 0,                   _     /* skylake/zen2 */
+#define X86_CMOV                 1H,        EDX, 15, 0,                   _
+#define X86_CQM                  7H,        EBX, 12, 0,                   _
+#define X86_CX16                 1H,        ECX, 13, 0,                   _
+#define X86_CX8                  1H,        EDX,  8, 0,                   _
+#define X86_DCA                  1H,        ECX, 18, 0,                   _
+#define X86_DE                   1H,        EDX,  2, 0,                   _
+#define X86_DS                   1H,        EDX, 21, 0,                   _
+#define X86_DSCPL                1H,        ECX,  4, 0,                   _
+#define X86_DTES64               1H,        ECX,  2, 0,                   _
+#define X86_ERMS                 7H,        EBX,  9, 0,                   _     /* broaadwell c. 2014 */
+#define X86_EST                  1H,        ECX,  7, 0,                   _
+#define X86_F16C                 1H,        ECX, 29, 0,                   _
+#define X86_FDP_EXCPTN_ONLY      7H,        EBX,  6, 0,                   _
+#define X86_FLUSH_L1D            7H,        EDX, 28, 0,                   _
+#define X86_FMA                  1H,        ECX, 12, _X86_CC_FMA,         _     /* haswell c. 2013 */
+#define X86_FPU                  1H,        EDX,  0, 0,                   _
+#define X86_FSGSBASE             7H,        EBX,  0, 0,                   _
+#define X86_FXSR                 1H,        EDX, 24, 0,                   _
+#define X86_GBPAGES              80000001H, EDX, 26, 0,                   _
+#define X86_GFNI                 7H,        ECX,  8, 0,                   _
+#define X86_HLE                  7H,        EBX,  4, 0,                   _
+#define X86_HT                   1H,        EDX, 28, 0,                   _
+#define X86_HYPERVISOR           1H,        ECX, 31, 0,                   _
+#define X86_IA64                 1H,        EDX, 30, 0,                   _
+#define X86_INTEL_PT             7H,        EBX, 25, 0,                   _
+#define X86_INTEL_STIBP          7H,        EDX, 27, 0,                   _
+#define X86_INVPCID              1H,        EBX, 10, 0,                   _
+#define X86_INVTSC               80000007H, EDX,  8, _X86_CC_POPCNT,      _     /* i.e. not a K8 */
+#define X86_LA57                 7H,        ECX, 16, 0,                   _
+#define X86_LAHF_LM              80000001H, ECX,  0, 0,                   _
+#define X86_LM                   80000001H, EDX, 29, 0,                   _
+#define X86_MCA                  1H,        EDX, 14, 0,                   _
+#define X86_MCE                  1H,        EDX,  7, 0,                   _
+#define X86_MD_CLEAR             7H,        EDX, 10, 0,                   _
+#define X86_MMX                  1H,        EDX, 23, 0,                   _
+#define X86_MOVBE                1H,        ECX, 22, 0,                   _
+#define X86_MOVDIR64B            7H,        ECX, 28, 0,                   _
+#define X86_MOVDIRI              7H,        ECX, 27, 0,                   _
+#define X86_MP                   80000001H, EDX, 19, 0,                   _
+#define X86_MPX                  7H,        EBX, 14, 0,                   _
+#define X86_MSR                  1H,        EDX,  5, 0,                   _
+#define X86_MTRR                 1H,        EDX, 12, 0,                   _
+#define X86_MWAIT                1H,        ECX,  3, 0,                   _
+#define X86_NX                   80000001H, EDX, 20, 0,                   _
+#define X86_OSPKE                7H,        ECX,  4, 0,                   _
+#define X86_OSXSAVE              1H,        ECX, 27, 0,                   _
+#define X86_PAE                  1H,        EDX,  6, 0,                   _
+#define X86_PAT                  1H,        EDX, 16, 0,                   _
+#define X86_PBE                  1H,        EDX, 31, 0,                   _
+#define X86_PCID                 1H,        ECX, 17, 0,                   _
+#define X86_PCLMUL               1H,        ECX,  1, _X86_CC_PCLMUL,      _     /* westmere c. 2010 */
+#define X86_PCONFIG              7H,        EDX, 18, 0,                   _
+#define X86_PDCM                 1H,        ECX, 15, 0,                   _
+#define X86_PGE                  1H,        EDX, 13, 0,                   _
+#define X86_PKU                  7H,        ECX,  3, 0,                   _
+#define X86_PN                   1H,        EDX, 18, 0,                   _
+#define X86_POPCNT               1H,        ECX, 23, _X86_CC_POPCNT,      _     /* nehalem c. 2008 */
+#define X86_PSE                  1H,        EDX,  3, 0,                   _
+#define X86_PSE36                1H,        EDX, 17, 0,                   _
+#define X86_RDPID                7H,        ECX, 22, _X86_CC_RDPID,       _     /* cannonlake c. 2018 */
+#define X86_RDRND                1H,        ECX, 30, _X86_CC_RDRND,       _     /* ivybridge c. 2012 */
+#define X86_RDSEED               7H,        EBX, 18, _X86_CC_RDSEED,      _     /* broadwell c. 2014 */
+#define X86_RDTSCP               80000001H, EDX, 27, 0,                   _
+#define X86_RDT_A                7H,        EBX, 15, 0,                   _
+#define X86_RTM                  7H,        EBX, 11, 0,                   _
+#define X86_SDBG                 1H,        ECX, 11, 0,                   _
+#define X86_SELFSNOOP            1H,        EDX, 27, 0,                   _
+#define X86_SEP                  1H,        EDX, 11, 0,                   _
+#define X86_SHA                  7H,        EBX, 29, _X86_CC_SHA,         _     /* goldmont (2016) */
+#define X86_SMAP                 7H,        EBX, 20, 0,                   _
+#define X86_SMEP                 7H,        EBX,  7, 0,                   _
+#define X86_SMX                  1H,        ECX,  6, 0,                   _
+#define X86_SPEC_CTRL            7H,        EDX, 26, 0,                   _
+#define X86_SPEC_CTRL_SSBD       7H,        EDX, 31, 0,                   _
+#define X86_SSE                  1H,        EDX, 25, _X86_CC_SSE,         _     /* pentium c. 1999 */
+#define X86_SSE2                 1H,        EDX, 26, _X86_CC_SSE2,        _     /* pentium c. 2001 */
+#define X86_SSE3                 1H,        ECX,  0, _X86_CC_SSE3,        _     /* k8 c. 2005 */
+#define X86_SSE4_1               1H,        ECX, 19, _X86_CC_SSE4_1,      _     /* core c. 2006 */
+#define X86_SSE4_2               1H,        ECX, 20, _X86_CC_SSE4_2,      _     /* nehalem c. 2008 */
+#define X86_SSSE3                1H,        ECX,  9, _X86_CC_SSSE3,       _     /* westmere c. 2010 */
+#define X86_SYSCALL              80000001H, EDX, 11, 0,                   _
+#define X86_TM2                  1H,        ECX,  8, 0,                   _
+#define X86_TME                  7H,        ECX, 13, 0,                   _
+#define X86_TSC                  1H,        EDX,  4, 0,                   _
+#define X86_TSC_ADJUST           7H,        EBX,  1, 0,                   _
+#define X86_TSC_DEADLINE_TIMER   1H,        ECX, 24, 0,                   _
+#define X86_TSX_FORCE_ABORT      7H,        EDX, 13, 0,                   _
+#define X86_UMIP                 7H,        ECX,  2, 0,                   _
+#define X86_VAES                 7H,        ECX,  9, 0,                   _
+#define X86_VME                  1H,        EDX,  1, 0,                   _
+#define X86_VMX                  1H,        ECX,  5, 0,                   _
+#define X86_VPCLMULQDQ           7H,        ECX, 10, 0,                   _
+#define X86_WAITPKG              7H,        ECX,  5, 0,                   _
+#define X86_X2APIC               1H,        ECX, 21, 0,                   _
+#define X86_XSAVE                1H,        ECX, 26, _X86_CC_XSAVE,       _     /* sandybridge c. 2012 */
+#define X86_XTPR                 1H,        ECX, 14, 0,                   _
+#define X86_ZERO_FCS_FDS         7H,        EBX, 13, 0,                   _
+/* clang-format on */
+
+/* AMD specific features */
+#define X86_ABM            80000001H, ECX, 5, _X86_CC_ABM, _
+#define X86_3DNOW          80000001H, EDX, 31, 0, _
+#define X86_3DNOWEXT       80000001H, EDX, 30, 0, _
+#define X86_3DNOWPREFETCH  80000001H, ECX, 8, 0, _
+#define X86_BPEXT          80000001H, ECX, 26, 0, _
+#define X86_CMP_LEGACY     80000001H, ECX, 1, 0, _
+#define X86_CR8_LEGACY     80000001H, ECX, 4, 0, _
+#define X86_EXTAPIC        80000001H, ECX, 3, 0, _
+#define X86_FMA4           80000001H, ECX, 16, 0, _
+#define X86_FXSR_OPT       80000001H, EDX, 25, 0, _
+#define X86_IBS            80000001H, ECX, 10, 0, _
+#define X86_LWP            80000001H, ECX, 15, 0, _
+#define X86_MISALIGNSSE    80000001H, ECX, 7, 0, _
+#define X86_MMXEXT         80000001H, EDX, 22, 0, _
+#define X86_MWAITX         80000001H, ECX, 29, 0, _
+#define X86_NODEID_MSR     80000001H, ECX, 19, 0, _
+#define X86_OSVW           80000001H, ECX, 9, 0, _
+#define X86_OVERFLOW_RECOV 80000007H, EBX, 0, 0, _
+#define X86_PERFCTR_CORE   80000001H, ECX, 23, 0, _
+#define X86_PERFCTR_LLC    80000001H, ECX, 28, 0, _
+#define X86_PERFCTR_NB     80000001H, ECX, 24, 0, _
+#define X86_PTSC           80000001H, ECX, 27, 0, _
+#define X86_SKINIT         80000001H, ECX, 12, 0, _
+#define X86_SMCA           80000007H, EBX, 3, 0, _
+#define X86_SSE4A          80000001H, ECX, 6, 0, _
+#define X86_SUCCOR         80000007H, EBX, 1, 0, _
+#define X86_SVM            80000001H, ECX, 2, 0, _
+#define X86_TBM            80000001H, ECX, 21, 0, _
+#define X86_TCE            80000001H, ECX, 17, 0, _
+#define X86_TOPOEXT        80000001H, ECX, 22, 0, _
+#define X86_WDT            80000001H, ECX, 13, 0, _
+#define X86_XOP            80000001H, ECX, 11, 0, _
+
+/* Defined but not loaded by kCpuids.S */
+#define X86_ARAT            6H, EAX, 2, 0, _
+#define X86_AVIC            8000000AH, EDX, 13, 0, _
+#define X86_CLZERO          80000008H, EBX, 0, 0, _
+#define X86_DECODEASSISTS   8000000AH, EDX, 7, 0, _
+#define X86_DTHERM          6H, EAX, 0, 0, _
+#define X86_FLUSHBYASID     8000000AH, EDX, 6, 0, _
+#define X86_HWP             6H, EAX, 7, 0, _
+#define X86_HWP_ACT_WINDOW  6H, EAX, 9, 0, _
+#define X86_HWP_EPP         6H, EAX, 10, 0, _
+#define X86_HWP_NOTIFY      6H, EAX, 8, 0, _
+#define X86_HWP_PKG_REQ     6H, EAX, 11, 0, _
+#define X86_IBPB            80000008H, EBX, 12, 0, _
+#define X86_IBRS            80000008H, EBX, 14, 0, _
+#define X86_IDA             6H, EAX, 1, 0, _
+#define X86_IRPERF          80000008H, EBX, 1, 0, _
+#define X86_LBRV            8000000AH, EDX, 1, 0, _
+#define X86_NPT             8000000AH, EDX, 0, 0, _
+#define X86_NRIPS           8000000AH, EDX, 3, 0, _
+#define X86_PAUSEFILTER     8000000AH, EDX, 10, 0, _
+#define X86_PFTHRESHOLD     8000000AH, EDX, 12, 0, _
+#define X86_PLN             6H, EAX, 4, 0, _
+#define X86_PTS             6H, EAX, 6, 0, _
+#define X86_SSBD            80000008H, EBX, 24, 0, _
+#define X86_SSB_NO          80000008H, EBX, 26, 0, _
+#define X86_STIBP           80000008H, EBX, 15, 0, _
+#define X86_STIBP_ALWAYS_ON 80000008H, EBX, 17, 0, _
+#define X86_SVML            8000000AH, EDX, 2, 0, _
+#define X86_TSCRATEMSR      8000000AH, EDX, 4, 0, _
+#define X86_VGIF            8000000AH, EDX, 16, 0, _
+#define X86_VIRT_SSBD       80000008H, EBX, 25, 0, _
+#define X86_VMCBCLEAN       8000000AH, EDX, 5, 0, _
+#define X86_V_VMSAVE_VMLOAD 8000000AH, EDX, 15, 0, _
+#define X86_WBNOINVD        80000008H, EBX, 9, 0, _
+#define X86_XGETBV1         DH, EAX, 2, 0, _
+#define X86_XSAVEC          DH, EAX, 1, 0, _
+#define X86_XSAVEERPTR      80000008H, EBX, 2, 0, _
+#define X86_XSAVEOPT        DH, EAX, 0, 0, _
+#define X86_XSAVES          DH, EAX, 3, 0, _
+
+#define X86_NEED(FEATURE) _X86_NEED(X86_##FEATURE)
+#define X86_WORD(FEATURE) _X86_WORD(X86_##FEATURE)
+#define X86_LEAF(FEATURE) _X86_LEAF(X86_##FEATURE)
+#define X86_REG(FEATURE)  _X86_REG(X86_##FEATURE)
+#define X86_BIT(FEATURE)  _X86_BIT(X86_##FEATURE)
+
+#define _X86_HAVE(FEATURE) __X86_HAVE(FEATURE)
+#define _X86_NEED(FEATURE) __X86_NEED(FEATURE)
+#define _X86_WORD(FEATURE) __X86_WORD(FEATURE)
+#define _X86_LEAF(FEATURE) __X86_LEAF(FEATURE)
+#define _X86_REG(FEATURE)  __X86_REG(FEATURE)
+#define _X86_BIT(FEATURE)  __X86_BIT(FEATURE)
+
+#define __X86_HAVE(LEAF, REG, BIT, MANDATORY, HOOK) \
+  ___X86_HAVE(LEAF, REG, BIT, MANDATORY, _X86_HOOK_##HOOK)
+#define __X86_NEED(LEAF, REG, BIT, MANDATORY, HOOK) MANDATORY
+#define __X86_WORD(LEAF, REG, BIT, MANDATORY, HOOK) KCPUIDS(LEAF, REG)
+#define __X86_LEAF(LEAF, REG, BIT, MANDATORY, HOOK) LEAF
+#define __X86_REG(LEAF, REG, BIT, MANDATORY, HOOK)  REG
+#define __X86_BIT(LEAF, REG, BIT, MANDATORY, HOOK)  BIT
+
+#ifndef __ASSEMBLER__
+#define ___X86_HAVE(LEAF, REG, BIT, MANDATORY, HOOK) \
+  HOOK(!!(MANDATORY || KCPUIDS(LEAF, REG) & (1u << BIT)))
+#else
+#define ___X86_HAVE(LEAF, REG, BIT, MANDATORY, HOOK) \
+  $1 << (BIT % 8), BIT / 8 + KCPUIDS(LEAF, REG)
+#endif
+
+#define _X86_HOOK__(X) X
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+uint64_t pdep(uint64_t, uint64_t) pureconst;
+
+#define PDEP(NUMBER, BITMASK)                                                \
+  ({                                                                         \
+    typeof(BITMASK) ShuffledBits, Number = (NUMBER);                         \
+    asm("pdep\t%2,%1,%0" : "=r"(ShuffledBits) : "r"(Number), "rm"(BITMASK)); \
+    ShuffledBits;                                                            \
+  })
+
+#define pdep(NUMBER, BITMASK) \
+  (!X86_HAVE(BMI2) ? pdep(NUMBER, BITMASK) : PDEP(NUMBER, BITMASK))
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pext.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PEXT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+uint64_t pext(uint64_t, uint64_t) pureconst;
+
+#define PEXT(NUMBER, BITMASK)                                                \
+  ({                                                                         \
+    typeof(BITMASK) ShuffledBits, Number = (NUMBER);                         \
+    asm("pext\t%2,%1,%0" : "=r"(ShuffledBits) : "r"(Number), "rm"(BITMASK)); \
+    ShuffledBits;                                                            \
+  })
+
+#define pext(NUMBER, BITMASK) \
+  (!X86_HAVE(BMI2) ? pext(NUMBER, BITMASK) : PEXT(NUMBER, BITMASK))
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+unsigned long morton(unsigned long, unsigned long) libcesque;
+axdx_t unmorton(unsigned long) libcesque;
+
+#ifndef __STRICT_ANSI__
+#define morton(Y, X)                                                          \
+  (X86_NEED(BMI2) ? pdep(X, 0x5555555555555555) | pdep(Y, 0xAAAAAAAAAAAAAAAA) \
+                  : morton(Y, X))
+#define unmorton(I)                                                         \
+  (X86_NEED(BMI2)                                                           \
+       ? (axdx_t){pext(I, 0xAAAAAAAAAAAAAAAA), pext(I, 0x5555555555555555)} \
+       : unmorton(I))
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/bits/popcnt.h */
+
+#define COSMOPOLITAN_LIBC_BITS_POPCNT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+unsigned long popcnt(unsigned long) pureconst;
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define popcnt(X)                                         \
+  (__builtin_constant_p(X) ? __builtin_popcountll(X) : ({ \
+    unsigned long Res, Pop = (X);                         \
+    if (X86_HAVE(POPCNT)) {                               \
+      asm("popcnt\t%1,%0" : "=r"(Res) : "r"(Pop) : "cc"); \
+    } else {                                              \
+      Res = (popcnt)(Pop);                                \
+    }                                                     \
+    Res;                                                  \
+  }))
+#endif /* GNUC && !ANSI */
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/bits/pushpop.h */
+
+#define COSMOPOLITAN_LIBC_BITS_PUSHPOP_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#if !defined(__GNUC__) || defined(__STRICT_ANSI__)
+#define pushpop(x) (x)
+#else
+/**
+ * PushPop
+ * An elegant weapon for a more civilized age.
+ */
+#define pushpop(x)                                          \
+  ({                                                        \
+    typeof(x) Popped;                                       \
+    if (__builtin_constant_p(x) &&                          \
+        (TYPE_SIGNED(typeof(x)) ? (intptr_t)(x) + 128 < 256 \
+                                : (intptr_t)(x) < 128)) {   \
+      if (x) {                                              \
+        asm("push\t%1\n\t"                                  \
+            "pop\t%q0"                                      \
+            : "=r"(Popped)                                  \
+            : "ir"(x));                                     \
+      } else {                                              \
+        asm("xor\t%k0,%k0" : "=r"(Popped));                 \
+      }                                                     \
+    } else {                                                \
+      asm("" : "=r"(Popped) : "0"(x));                      \
+    }                                                       \
+    Popped;                                                 \
+  })
+#endif
+
+#if !defined(__GNUC__) || defined(__STRICT_ANSI__)
+#define pushmov(d, x) (*(d) = (x))
+#else
+#define pushmov(d, x)                                       \
+  ({                                                        \
+    typeof(*(d)) Popped = (x);                              \
+    if (__builtin_constant_p(x) &&                          \
+        (TYPE_SIGNED(typeof(x)) ? (intptr_t)(x) + 128 < 256 \
+                                : (intptr_t)(x) < 128)) {   \
+      asm("pushq\t%1\n\t"                                   \
+          "popq\t%0"                                        \
+          : "=m"(*(d))                                      \
+          : "ir"(Popped));                                  \
+    } else {                                                \
+      *(d) = Popped;                                        \
+    }                                                       \
+    Popped;                                                 \
+  })
+#endif
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/bits/segmentation.h */
+
+#define COSMOPOLITAN_LIBC_BITS_SEGMENTATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+
+/**
+ * Reads scalar from memory, offset by segment.
+ *
+ * @return *(MEM) relative to segment
+ * @see arch_prctl()
+ * @see pushpop()
+ */
+#define fs(MEM) __peek("fs", MEM)
+#define gs(MEM) __peek("gs", MEM)
+
+#define __peek(SEGMENT, ADDRESS)                                  \
+  ({                                                              \
+    typeof(*(ADDRESS)) Pk;                                        \
+    asm("mov\t%%" SEGMENT ":%1,%0" : "=r"(Pk) : "m"(*(ADDRESS))); \
+    Pk;                                                           \
+  })
+
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/bits/weaken.h */
+
+#define COSMOPOLITAN_LIBC_BITS_WEAKEN_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+#ifndef __STRICT_ANSI__
+
+#define weaken(symbol) ((const typeof(&(symbol)))weakaddr(#symbol))
+
+#define strongaddr(symbolstr)                \
+  ({                                         \
+    intptr_t waddr;                          \
+    asm(ezlea(symbolstr) "0" : "=r"(waddr)); \
+    waddr;                                   \
+  })
+
+#define weakaddr(symbolstr)                                             \
+  ({                                                                    \
+    intptr_t waddr;                                                     \
+    asm(".weak\t" symbolstr "\n\t" ezlea(symbolstr) "0" : "=r"(waddr)); \
+    waddr;                                                              \
+  })
+
+#else
+#define weaken(symbol)      symbol
+#define weakaddr(symbolstr) &(symbolstr)
+#endif /* __STRICT_ANSI__ */
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/typedef/sigaction_f.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_TYPEDEF_SIGACTION_F_H_
+
+
+/*!BEGIN libc/calls/struct/siginfo.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGINFO_H_
+
+
+/*!BEGIN libc/calls/struct/sigval.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGVAL_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+union sigval {
+  int32_t sival_int;
+  void *sival_ptr;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct siginfo {
+  int32_t si_signo;
+  int32_t si_errno;
+  int32_t si_code;
+  union {
+    struct {
+      union {
+        struct {
+          int32_t si_pid;
+          uint32_t si_uid;
+        };
+        struct {
+          int32_t si_timerid;
+          int32_t si_overrun;
+        };
+      };
+      union {
+        union sigval si_value;
+        struct {
+          int32_t si_status;
+          int64_t si_utime, si_stime;
+        };
+      };
+    };
+    struct {
+      void *si_addr;
+      int16_t si_addr_lsb;
+      union {
+        struct {
+          void *si_lower;
+          void *si_upper;
+        };
+        uint32_t si_pkey;
+      };
+    };
+    struct {
+      int64_t si_band;
+      int32_t si_fd;
+    };
+    struct {
+      void *si_call_addr;
+      int32_t si_syscall;
+      uint32_t si_arch;
+    };
+    char __ignoreme[128 - 2 * sizeof(int32_t) - sizeof(int64_t)];
+  };
+};
+
+typedef struct siginfo siginfo_t;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/ucontext.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_UCONTEXT_H_
+
+
+/*!BEGIN libc/calls/struct/sigaltstack.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGALTSTACK_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct sigaltstack {
+  void *ss_sp;
+  int ss_flags;
+  size_t ss_size;
+};
+
+typedef struct sigaltstack stack_t;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/sigset.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGSET_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct sigset {
+  uint64_t __bits[2];
+} sigset_t;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#define REG_R8      REG_R8
+#define REG_R9      REG_R9
+#define REG_R10     REG_R10
+#define REG_R11     REG_R11
+#define REG_R12     REG_R12
+#define REG_R13     REG_R13
+#define REG_R14     REG_R14
+#define REG_R15     REG_R15
+#define REG_RDI     REG_RDI
+#define REG_RSI     REG_RSI
+#define REG_RBP     REG_RBP
+#define REG_RBX     REG_RBX
+#define REG_RDX     REG_RDX
+#define REG_RAX     REG_RAX
+#define REG_RCX     REG_RCX
+#define REG_RSP     REG_RSP
+#define REG_RIP     REG_RIP
+#define REG_EFL     REG_EFL
+#define REG_CSGSFS  REG_CSGSFS
+#define REG_ERR     REG_ERR
+#define REG_TRAPNO  REG_TRAPNO
+#define REG_OLDMASK REG_OLDMASK
+#define REG_CR2     REG_CR2
+
+enum GeneralRegister {
+  REG_R8,
+  REG_R9,
+  REG_R10,
+  REG_R11,
+  REG_R12,
+  REG_R13,
+  REG_R14,
+  REG_R15,
+  REG_RDI,
+  REG_RSI,
+  REG_RBP,
+  REG_RBX,
+  REG_RDX,
+  REG_RAX,
+  REG_RCX,
+  REG_RSP,
+  REG_RIP,
+  REG_EFL,
+  REG_CSGSFS,
+  REG_ERR,
+  REG_TRAPNO,
+  REG_OLDMASK,
+  REG_CR2
+};
+
+struct XmmRegister {
+  uint64_t u64[2];
+};
+
+struct FpuStackEntry {
+  uint16_t significand[4];
+  uint16_t exponent;
+  uint16_t padding[3];
+};
+
+struct thatispacked FpuState {
+  uint16_t cwd;
+  uint16_t swd;
+  uint16_t ftw;
+  uint16_t fop;
+  uint64_t rip;
+  uint64_t rdp;
+  uint32_t mxcsr;
+  uint32_t mxcr_mask;
+  struct FpuStackEntry st[8];
+  struct XmmRegister xmm[16];
+  uint32_t __padding[24];
+};
+
+typedef uint64_t greg_t;
+typedef greg_t gregset_t[23];
+typedef struct FpuState *fpregset_t;
+
+struct MachineContext {
+  union {
+    struct {
+      uint64_t r8;
+      uint64_t r9;
+      uint64_t r10;
+      uint64_t r11;
+      uint64_t r12;
+      uint64_t r13;
+      uint64_t r14;
+      uint64_t r15;
+      uint64_t rdi;
+      uint64_t rsi;
+      uint64_t rbp;
+      uint64_t rbx;
+      uint64_t rdx;
+      uint64_t rax;
+      uint64_t rcx;
+      uint64_t rsp;
+      uint64_t rip;
+      uint64_t eflags;
+      uint16_t cs;
+      uint16_t gs;
+      uint16_t fs;
+      uint16_t __pad0;
+      uint64_t err;
+      uint64_t trapno;
+      uint64_t oldmask;
+      uint64_t cr2;
+    };
+    gregset_t gregs;
+  };
+  struct FpuState *fpregs;
+  uint64_t __pad1[8];
+};
+
+typedef struct MachineContext mcontext_t;
+
+struct ucontext {
+  uint64_t uc_flags;
+  struct ucontext *uc_link;
+  stack_t uc_stack;
+  mcontext_t uc_mcontext; /* use this */
+  sigset_t uc_sigmask;
+  struct FpuState __fpustate; /* for cosmo on non-linux */
+};
+
+typedef struct ucontext ucontext_t;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef void (*sigaction_f)(int, struct siginfo *, struct ucontext *);
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/typedef/sighandler_t.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_TYPEDEF_SIGHANDLER_T_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef void (*sighandler_t)(int);
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/dirent.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_DIRENT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct dirent {      /* linux getdents64 abi */
+  uint64_t d_ino;    /* inode number */
+  int64_t d_off;     /* implementation-dependent location number */
+  uint16_t d_reclen; /* byte length of this whole struct and string */
+  uint8_t d_type;    /* DT_UNKNOWN, DT_BLK, DT_DIR, etc. */
+  char d_name[256];  /* NUL-terminated basename */
+};
+
+struct dirstream;
+typedef struct dirstream DIR;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/flock.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_FLOCK_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct flock {
+  short l_type;
+  short l_whence;
+  int64_t l_start;
+  int64_t l_len;
+  int l_pid;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/framebufferfixedscreeninfo.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_FRAMEBUFFERFIXEDSCREENINFO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct FrameBufferFixedScreenInfo {
+  char id[16];
+  uint64_t smem_start;
+  uint32_t smem_len;
+  uint32_t type;
+  uint32_t type_aux;
+  uint32_t visual;
+  uint16_t xpanstep;
+  uint16_t ypanstep;
+  uint16_t ywrapstep;
+  uint32_t line_length;
+  uint64_t mmio_start;
+  uint32_t mmio_len;
+  uint32_t accel;
+  uint16_t capabilities;
+  uint16_t reserved[2];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/framebuffervirtualscreeninfo.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_FRAMEBUFFERVIRTUALSCREENINFO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct FrameBufferBitField {
+  uint32_t offset;
+  uint32_t length;
+  uint32_t msb_right;
+};
+
+struct FrameBufferVirtualScreenInfo {
+  uint32_t xres;
+  uint32_t yres;
+  uint32_t xres_virtual;
+  uint32_t yres_virtual;
+  uint32_t xoffset;
+  uint32_t yoffset;
+  uint32_t bits_per_pixel;
+  uint32_t grayscale;
+  struct FrameBufferBitField red;
+  struct FrameBufferBitField green;
+  struct FrameBufferBitField blue;
+  struct FrameBufferBitField transp;
+  uint32_t nonstd;
+  uint32_t activate;
+  uint32_t height;
+  uint32_t width;
+  uint32_t accel_flags;
+  uint32_t pixclock;
+  uint32_t left_margin;
+  uint32_t right_margin;
+  uint32_t upper_margin;
+  uint32_t lower_margin;
+  uint32_t hsync_len;
+  uint32_t vsync_len;
+  uint32_t sync;
+  uint32_t vmode;
+  uint32_t rotate;
+  uint32_t colorspace;
+  uint32_t reserved[4];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/iovec.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_IOVEC_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct iovec {
+  void *iov_base;
+  size_t iov_len;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/itimerval.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_ITIMERVAL_H_
+
+
+/*!BEGIN libc/calls/struct/timeval.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_TIMEVAL_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct timeval {
+  int64_t tv_sec;
+  int64_t tv_usec; /* microseconds */
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct itimerval {
+  struct timeval it_interval; /* {0,0} means singleshot */
+  struct timeval it_value;    /* {0,0} means disarm */
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/rlimit.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_RLIMIT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct rlimit {
+  int64_t rlim_cur;
+  int64_t rlim_max;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/rusage.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_RUSAGE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct rusage {
+  union {
+    struct {
+      struct timeval ru_utime; /* user CPU time used */
+      struct timeval ru_stime; /* system CPU time used */
+      int64_t ru_maxrss;       /* maximum resident set size */
+      int64_t ru_ixrss;        /* integral shared memory size */
+      int64_t ru_idrss;        /* integral unshared data size */
+      int64_t ru_isrss;        /* integral unshared stack size */
+      int64_t ru_minflt;       /* page reclaims (soft page faults) */
+      int64_t ru_majflt;       /* page faults (hard page faults) */
+      int64_t ru_nswap;        /* swaps */
+      int64_t ru_inblock;      /* block input operations */
+      int64_t ru_oublock;      /* block output operations */
+      int64_t ru_msgsnd;       /* IPC messages sent */
+      int64_t ru_msgrcv;       /* IPC messages received */
+      int64_t ru_nsignals;     /* signals received */
+      int64_t ru_nvcsw;        /* voluntary context switches */
+      int64_t ru_nivcsw;       /* involuntary context switches */
+    };
+    uint8_t __conservatism[1024];
+  };
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/sched_param.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SCHED_PARAM_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct sched_param {
+  int32_t sched_priority;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/sigaction-netbsd.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGACTION_NETBSD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct sigset_netbsd {
+  uint32_t sig[4];
+};
+
+struct sigaction_netbsd {
+  intptr_t sa_handler;
+  struct sigset_netbsd sa_mask;
+  uint32_t sa_flags;
+};
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/sigaction.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGACTION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct sigaction { /* cosmo abi */
+  union {
+    sighandler_t sa_handler;
+    sigaction_f sa_sigaction;
+  };
+  uint64_t sa_flags;
+  void (*sa_restorer)(void);
+  struct sigset sa_mask;
+  int64_t __pad;
+} forcealign(8);
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/stat.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_STAT_H_
+
+
+/*!BEGIN libc/calls/struct/timespec.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_TIMESPEC_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct timespec {
+  int64_t tv_sec;
+  int64_t tv_nsec; /* nanoseconds */
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct stat {               /* linux abi */
+  int64_t st_dev;           /* 0: id of device with file */
+  int64_t st_ino;           /* 8: inode number in disk b-tree */
+  int64_t st_nlink;         /* 16: hard link count */
+  int32_t st_mode;          /* 24: octal file mask thing */
+  int32_t st_uid;           /* 28: user id of owner */
+  int32_t st_gid;           /* group id of owning group */
+  int32_t __pad;            /* ignore this */
+  int64_t st_rdev;          /* id of device if a special file */
+  int64_t st_size;          /* bytes in file */
+  int64_t st_blksize;       /* preferred chunking for underlying filesystem */
+  int64_t st_blocks;        /* number of 512-byte pages allocated to file */
+  struct timespec st_atim;  /* access time (consider noatime) */
+  struct timespec st_mtim;  /* modified time */
+  struct timespec st_ctim;  /* complicated time */
+  int64_t __future[3 + 10]; /* reserved for future use */
+#define st_atime st_atim.tv_sec
+#define st_mtime st_mtim.tv_sec
+#define st_ctime st_ctim.tv_sec
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/sysinfo.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SYSINFO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct sysinfo {
+  int64_t uptime;     /* seconds since boot */
+  uint64_t loads[3];  /* 1-5-15 min active process averages */
+  uint64_t totalram;  /* system physical memory */
+  uint64_t freeram;   /* amount of ram currently going to waste */
+  uint64_t sharedram; /* bytes w/ pages mapped into multiple progs */
+  uint64_t bufferram; /* lingering disk pages; see fadvise */
+  uint64_t totalswap; /* size of emergency memory */
+  uint64_t freeswap;  /* hopefully equal to totalswap */
+  int16_t procs;      /* number of processes */
+  int16_t __ignore;   /* padding */
+  uint64_t totalhigh; /* wut */
+  uint64_t freehigh;  /* wut */
+  uint32_t mem_unit;  /* ram stuff above is multiples of this */
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/termios.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_TERMIOS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct termios {     /* GNU/Systemd ABI */
+  uint32_t c_iflag;  /* input modes */
+  uint32_t c_oflag;  /* output modes */
+  uint32_t c_cflag;  /* control modes */
+  uint32_t c_lflag;  /* local modes */
+  uint8_t c_cc[32];  /* code mappings */
+  uint32_t c_ispeed; /* input speed */
+  uint32_t c_ospeed; /* output speed */
+};
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/tms.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_TMS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct tms {
+  int64_t tms_utime;  /* userspace time */
+  int64_t tms_stime;  /* kernelspace time */
+  int64_t tms_cutime; /* children userspace time */
+  int64_t tms_cstime; /* children kernelspace time */
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/user_regs_struct.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_USER_REGS_STRUCT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/**
+ * Linux Kernel user registers.
+ *
+ * @note superset of struct pt_regs
+ * @see ptrace() w/ PTRACE_SYSCALL
+ */
+struct user_regs_struct {
+  uint64_t r15;
+  uint64_t r14;
+  uint64_t r13;
+  uint64_t r12;
+  uint64_t rbp;
+  uint64_t rbx;
+  uint64_t r11;
+  uint64_t r10;
+  uint64_t r9;
+  uint64_t r8;
+  uint64_t rax;
+  uint64_t rcx;
+  uint64_t rdx;
+  uint64_t rsi;
+  uint64_t rdi;
+  uint64_t orig_rax;
+  uint64_t rip;
+  uint64_t cs;
+  uint64_t eflags;
+  uint64_t rsp;
+  uint64_t ss;
+  uint64_t fs_base;
+  uint64_t gs_base;
+  uint64_t ds;
+  uint64_t es;
+  uint64_t fs;
+  uint64_t gs;
+};
+
+struct useregs_struct_freebsd {
+  int64_t r15;
+  int64_t r14;
+  int64_t r13;
+  int64_t r12;
+  int64_t r11;
+  int64_t r10;
+  int64_t r9;
+  int64_t r8;
+  int64_t rdi;
+  int64_t rsi;
+  int64_t rbp;
+  int64_t rbx;
+  int64_t rdx;
+  int64_t rcx;
+  int64_t rax;
+  uint32_t trapno;
+  uint16_t fs;
+  uint16_t gs;
+  uint32_t err;
+  uint16_t es;
+  uint16_t ds;
+  int64_t rip;
+  int64_t cs;
+  int64_t rflags;
+  int64_t rsp;
+  int64_t ss;
+};
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/utsname.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_UTSNAME_H_
+
+#define SYS_NMLN 321
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct utsname {
+  char sysname[SYS_NMLN];
+  char nodename[SYS_NMLN];
+  char release[SYS_NMLN];
+  char version[SYS_NMLN];
+  char machine[SYS_NMLN];
+  char domainname[SYS_NMLN];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/struct/winsize.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_STRUCT_WINSIZE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct winsize {
+  uint16_t ws_row;
+  uint16_t ws_col;
+  uint16_t ws_xpixel;
+  uint16_t ws_ypixel;
+};
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/calls.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_SYSCALLS_H_
+
+
+/*!BEGIN libc/fmt/pflink.h */
+
+#define COSMOPOLITAN_LIBC_FMT_PFLINK_H_
+
+
+/*!BEGIN libc/fmt/fmts.h */
+
+#define COSMOPOLITAN_LIBC_FMT_FMTS_H_
+
+#define PRINTF_NTOA_BUFFER_SIZE 144
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int __fmt_pad(int (*)(long, void *), void *, unsigned long) hidden;
+int __fmt_stoa(int (*)(long, void *), void *, void *, unsigned long,
+               unsigned long, unsigned long, unsigned char,
+               unsigned char) hidden;
+int __fmt_ntoa(int (*)(long, void *), void *, va_list, unsigned char,
+               unsigned long, unsigned long, unsigned long, unsigned char,
+               const char *) hidden;
+char *__fmt_dtoa(double, int, int, int *, int *, char **) hidden;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/mem/mem.h */
+
+#define COSMOPOLITAN_LIBC_MEM_MEM_H_
+
+#define M_TRIM_THRESHOLD (-1)
+#define M_GRANULARITY    (-2)
+#define M_MMAP_THRESHOLD (-3)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § dynamic memory                                            ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+void free(void *) libcesque;
+void *malloc(size_t) attributeallocsize((1)) mallocesque;
+void *calloc(size_t, size_t) attributeallocsize((1, 2)) mallocesque;
+void *memalign(size_t, size_t) attributeallocalign((1))
+    attributeallocsize((2)) mallocesque;
+void *realloc(void *, size_t) reallocesque;
+void *realloc_in_place(void *, size_t);
+void *reallocarray(void *, size_t, size_t) nodiscard;
+void *valloc(size_t) attributeallocsize((1)) vallocesque;
+void *pvalloc(size_t) attributeallocsize((1)) mallocesque;
+char *strdup(const char *) paramsnonnull() mallocesque;
+char *strndup(const char *, size_t) paramsnonnull() mallocesque;
+int posix_memalign(void **, size_t, size_t); /* wut */
+bool __grow(void *, size_t *, size_t, size_t) paramsnonnull((1, 2)) libcesque;
+
+int malloc_trim(size_t);
+size_t bulk_free(void **, size_t);
+size_t malloc_usable_size(const void *);
+void **independent_calloc(size_t, size_t, void **);
+void **independent_comalloc(size_t, size_t *, void **);
+
+wchar_t *wcsdup(const wchar_t *) strlenesque nodiscard;
+
+struct mallinfo {
+  size_t arena;    /* non-mmapped space allocated from system */
+  size_t ordblks;  /* number of free chunks */
+  size_t smblks;   /* always 0 */
+  size_t hblks;    /* always 0 */
+  size_t hblkhd;   /* space in mmapped regions */
+  size_t usmblks;  /* maximum total allocated space */
+  size_t fsmblks;  /* always 0 */
+  size_t uordblks; /* total allocated space */
+  size_t fordblks; /* total free space */
+  size_t keepcost; /* releasable (via malloc_trim) space */
+};
+struct mallinfo mallinfo(void);
+
+void malloc_stats(void);
+bool32 mallopt(int, int);
+size_t malloc_footprint(void);
+size_t malloc_max_footprint(void);
+size_t malloc_footprint_limit(void);
+size_t malloc_set_footprint_limit(size_t);
+void malloc_inspect_all(void (*handler)(void *, void *, size_t, void *),
+                        void *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/runtime/runtime.h */
+
+#define COSMOPOLITAN_LIBC_RUNTIME_RUNTIME_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § runtime                                                   ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+typedef long jmp_buf[8] forcealign(CACHELINE);
+
+extern int __argc;                                  /* CRT */
+extern char **__argv;                               /* CRT */
+extern char **environ;                              /* CRT */
+extern unsigned long *__auxv;                       /* CRT */
+extern char *program_invocation_name;               /* RII */
+extern char *program_invocation_short_name;         /* RII */
+extern uint64_t g_syscount;                         /* RII */
+extern const uint64_t kStartTsc;                    /* RII */
+extern const char kTmpPath[];                       /* RII */
+extern const char kNtSystemDirectory[];             /* RII */
+extern const char kNtWindowsDirectory[];            /* RII */
+extern unsigned char _base[] forcealign(PAGESIZE);  /* αpε */
+extern unsigned char _ehead[] forcealign(PAGESIZE); /* αpε */
+extern unsigned char _etext[] forcealign(PAGESIZE); /* αpε */
+extern unsigned char _edata[] forcealign(PAGESIZE); /* αpε */
+extern unsigned char _end[] forcealign(FRAMESIZE);  /* αpε */
+extern unsigned char _ereal;                        /* αpε */
+extern unsigned char __privileged_start;            /* αpε */
+extern unsigned char __test_start;                  /* αpε */
+extern unsigned char __ro;                          /* αpε */
+extern unsigned char *__relo_start[];               /* αpε */
+extern unsigned char *__relo_end[];                 /* αpε */
+extern uint8_t __zip_start[];                       /* αpε */
+extern uint8_t __zip_end[];                         /* αpε */
+
+void mcount(void);
+unsigned long getauxval(unsigned long);
+void *mapanon(size_t) vallocesque attributeallocsize((1));
+int setjmp(jmp_buf) libcesque returnstwice paramsnonnull();
+void longjmp(jmp_buf, int) libcesque wontreturn paramsnonnull();
+int _setjmp(jmp_buf) libcesque returnstwice paramsnonnull();
+void _longjmp(jmp_buf, int) libcesque wontreturn paramsnonnull();
+void exit(int) wontreturn;
+void _exit(int) libcesque wontreturn;
+void _Exit(int) libcesque wontreturn;
+void abort(void) wontreturn noinstrument;
+int __cxa_atexit(void *, void *, void *) libcesque;
+int atfork(void *, void *) libcesque;
+int atexit(void (*)(void)) libcesque;
+char *getenv(const char *) paramsnonnull() nosideeffect libcesque;
+int putenv(char *) paramsnonnull();
+int setenv(const char *, const char *, int) paramsnonnull();
+int unsetenv(const char *);
+int clearenv(void);
+void fpreset(void);
+int issetugid(void);
+void *mmap(void *, uint64_t, int32_t, int32_t, int32_t, int64_t);
+void *mremap(void *, uint64_t, uint64_t, int32_t, void *);
+int munmap(void *, uint64_t);
+int mprotect(void *, uint64_t, int) privileged;
+int msync(void *, size_t, int);
+void *sbrk(intptr_t);
+int brk(void *);
+
+bool _isheap(void *);
+int NtGetVersion(void);
+long missingno();
+void __print(const void *, size_t);
+void __print_string(const char *);
+void _loadxmm(void *);
+void _peekall(void);
+void _savexmm(void *);
+void _weakfree(void *);
+void free_s(void *) paramsnonnull() libcesque;
+int close_s(int *) paramsnonnull() libcesque;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/unicode/unicode.h */
+
+#define COSMOPOLITAN_LIBC_UNICODE_UNICODE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct lconv {
+  char *decimal_point;
+  char *thousands_sep;
+  char *grouping;
+  char *int_curr_symbol;
+  char *currency_symbol;
+  char *mon_decimal_point;
+  char *mon_thousands_sep;
+  char *mon_grouping;
+  char *positive_sign;
+  char *negative_sign;
+  char int_frac_digits;
+  char frac_digits;
+  char p_cs_precedes;
+  char p_sep_by_space;
+  char n_cs_precedes;
+  char n_sep_by_space;
+  char p_sign_posn;
+  char n_sign_posn;
+  char int_p_cs_precedes;
+  char int_n_cs_precedes;
+  char int_p_sep_by_space;
+  char int_n_sep_by_space;
+  char int_p_sign_posn;
+  char int_n_sign_posn;
+};
+
+int wcwidth(wchar_t) pureconst;
+int wcswidth(const wchar_t *, size_t) strlenesque;
+int wcsnwidth(const wchar_t *, size_t, size_t) strlenesque;
+int strwidth(const char *, size_t) strlenesque;
+int strnwidth(const char *, size_t, size_t) strlenesque;
+int strwidth16(const char16_t *, size_t) strlenesque;
+int strnwidth16(const char16_t *, size_t, size_t) strlenesque;
+struct lconv *localeconv(void);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+#ifndef __STRICT_ANSI__
+
+/**
+ * @fileoverview builtin+preprocessor+linker tricks for printf/scanf.
+ *
+ * Your printf() function only requires that you pay for what you use.
+ * These macros ensure that its code size starts at under 4kb, growing
+ * to about 40kb for a fully-loaded implementation. This works best when
+ * format strings are constexprs that only contain directives.
+ */
+
+#define PFLINK(FMT)                                                     \
+  ({                                                                    \
+    if (___PFLINK(FMT, strpbrk, "faAeEgG")) STATIC_YOINK("__fmt_dtoa"); \
+    if (___PFLINK(FMT, strpbrk, "cmrqs")) {                             \
+      if (___PFLINK(FMT, strchr, '#')) STATIC_YOINK("kCp437");          \
+      if (___PFLINK(FMT, strstr, "%m")) STATIC_YOINK("strerror");       \
+      if (!IsTiny() && (___PFLINK(FMT, strstr, "%*") ||                 \
+                        ___PFLINK(FMT, strpbrk, "0123456789"))) {       \
+        STATIC_YOINK("strnwidth");                                      \
+        STATIC_YOINK("strnwidth16");                                    \
+        STATIC_YOINK("wcsnwidth");                                      \
+      }                                                                 \
+    }                                                                   \
+    FMT;                                                                \
+  })
+
+#define SFLINK(FMT)                    \
+  ({                                   \
+    if (___PFLINK(FMT, strchr, 'm')) { \
+      STATIC_YOINK("malloc");          \
+      STATIC_YOINK("calloc");          \
+      STATIC_YOINK("free");            \
+      STATIC_YOINK("__grow");          \
+    }                                  \
+    FMT;                               \
+  })
+
+#if __GNUC__ + 0 < 4 || defined(__llvm__)
+#define ___PFLINK(FMT, FN, C) 1
+#else
+#define ___PFLINK(FMT, FN, C) \
+  !__builtin_constant_p(FMT) || ((FMT) && __builtin_##FN(FMT, C) != NULL)
+#endif
+
+#if defined(__GNUC__) && __GNUC__ < 6
+/*
+ * Compilers don't understand the features we've added to the format
+ * string DSL, such as c string escaping, therefore we can't use it.
+ * Ideally compilers should grant us more flexibility to define DSLs
+ *
+ * The recommended approach to turning this back on is `CFLAGS=-std=c11`
+ * which puts the compiler in __STRICT_ANSI__ mode, which Cosmopolitan
+ * respects by disabling all the esoteric tuning in headers like this.
+ */
+#pragma GCC diagnostic ignored "-Wformat-security"
+#endif /* __GNUC__ + 0 < 6 */
+#else
+#define PFLINK(FMT) FMT
+#define SFLINK(FMT) FMT
+#ifdef __GNUC__
+__asm__(".section .yoink\n\t"
+        "nopl\t__fmt_dtoa(%rip)\n\t"
+        "nopl\tkCp437(%rip)\n\t"
+        "nopl\tstrerror(%rip)\n\t"
+        "nopl\tstrnwidth(%rip)\n\t"
+        "nopl\tstrnwidth16(%rip)\n\t"
+        "nopl\twcsnwidth(%rip)\n\t"
+        "nopl\tmalloc(%rip)\n\t"
+        "nopl\tcalloc(%rip)\n\t"
+        "nopl\t__grow(%rip)\n\t"
+        ".previous");
+#else
+static long __pflink(long x) {
+  x |= kCp437[0];
+  x |= __fmt_dtoa(0, 0, 0, 0, 0, 0);
+  x |= strnwidth(0, 0, 0);
+  x |= strnwidth16(0, 0, 0);
+  x |= wcsnwidth(0, 0, 0);
+  x |= malloc(0);
+  x |= __grow(0, 0, 0, 0);
+  x |= (intptr_t)strerror(0);
+  x |= (intptr_t)calloc(0, 0);
+  return x;
+}
+#endif
+#endif /* __STRICT_ANSI__ */
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/s.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_S_H_
+
+
+/*!BEGIN libc/runtime/symbolic.h */
+
+#define COSMOPOLITAN_LIBC_RUNTIME_SYMBOLIC_H_
+
+#ifdef __ASSEMBLER__
+/* clang-format off */
+#define SYMBOLIC(NAME) NAME(%rip)
+#define LITERALLY(NAME) $NAME
+/* clang-format on */
+#else
+#define SYMBOLIC(NAME) NAME
+#define LITERALLY(NAME) NAME
+#endif
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long S_IEXEC;
+extern const long S_IFBLK;
+extern const long S_IFCHR;
+extern const long S_IFDIR;
+extern const long S_IFIFO;
+extern const long S_IFLNK;
+extern const long S_IFMT;
+extern const long S_IFREG;
+extern const long S_IFSOCK;
+extern const long S_IREAD;
+extern const long S_IRGRP;
+extern const long S_IROTH;
+extern const long S_IRUSR;
+extern const long S_IRWXG;
+extern const long S_IRWXO;
+extern const long S_IRWXU;
+extern const long S_ISGID;
+extern const long S_ISUID;
+extern const long S_ISVTX;
+extern const long S_IWGRP;
+extern const long S_IWOTH;
+extern const long S_IWRITE;
+extern const long S_IWUSR;
+extern const long S_IXGRP;
+extern const long S_IXOTH;
+extern const long S_IXUSR;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define S_IFREG LITERALLY(0100000)
+#define S_IFBLK LITERALLY(0060000)
+#define S_IFCHR LITERALLY(0020000)
+#define S_IFDIR LITERALLY(0040000)
+#define S_IFIFO LITERALLY(0010000)
+#define S_IFMT LITERALLY(0170000)
+#define S_IFLNK LITERALLY(0120000)
+#define S_IFSOCK LITERALLY(0140000)
+#define S_ISVTX LITERALLY(01000)
+#define S_ISGID LITERALLY(02000)
+#define S_ISUID LITERALLY(04000)
+#define S_IEXEC LITERALLY(00100)
+#define S_IWRITE LITERALLY(00200)
+#define S_IREAD LITERALLY(00400)
+#define S_IXUSR LITERALLY(00100)
+#define S_IWUSR LITERALLY(00200)
+#define S_IRUSR LITERALLY(00400)
+#define S_IRWXU LITERALLY(00700)
+#define S_IXGRP LITERALLY(00010)
+#define S_IWGRP LITERALLY(00020)
+#define S_IRGRP LITERALLY(00040)
+#define S_IRWXG LITERALLY(00070)
+#define S_IXOTH LITERALLY(00001)
+#define S_IWOTH LITERALLY(00002)
+#define S_IROTH LITERALLY(00004)
+#define S_IRWXO LITERALLY(00007)
+
+
+
+/*!BEGIN libc/sysv/consts/sig.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SIG_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long SIGABRT;
+extern const long SIGALRM;
+extern const long SIGBUS;
+extern const long SIGCHLD;
+extern const long SIGCONT;
+extern const long SIGFPE;
+extern const long SIGHUP;
+extern const long SIGILL;
+extern const long SIGINT;
+extern const long SIGIO;
+extern const long SIGIOT;
+extern const long SIGKILL;
+extern const long SIGPIPE;
+extern const long SIGPOLL;
+extern const long SIGPROF;
+extern const long SIGPWR;
+extern const long SIGQUIT;
+extern const long SIGRTMAX;
+extern const long SIGRTMIN;
+extern const long SIGSEGV;
+extern const long SIGSTKFLT;
+extern const long SIGSTKSZ;
+extern const long SIGSTOP;
+extern const long SIGSYS;
+extern const long SIGTERM;
+extern const long SIGTRAP;
+extern const long SIGTSTP;
+extern const long SIGTTIN;
+extern const long SIGTTOU;
+extern const long SIGUNUSED;
+extern const long SIGURG;
+extern const long SIGUSR1;
+extern const long SIGUSR2;
+extern const long SIGVTALRM;
+extern const long SIGWINCH;
+extern const long SIGXCPU;
+extern const long SIGXFSZ;
+
+extern const long SIG_ATOMIC_MIN;
+extern const long SIG_BLOCK;
+extern const long SIG_SETMASK;
+extern const long SIG_UNBLOCK;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define SIGABRT LITERALLY(6)
+#define SIGALRM LITERALLY(14)
+#define SIGBUS SYMBOLIC(SIGBUS)
+#define SIGCHLD SYMBOLIC(SIGCHLD)
+#define SIGCONT SYMBOLIC(SIGCONT)
+#define SIGFPE LITERALLY(8)
+#define SIGHUP LITERALLY(1)
+#define SIGILL LITERALLY(4)
+#define SIGINT LITERALLY(2)
+#define SIGIO SYMBOLIC(SIGIO)
+#define SIGIOT LITERALLY(6)
+#define SIGKILL LITERALLY(9)
+#define SIGPIPE LITERALLY(13)
+#define SIGPOLL SYMBOLIC(SIGPOLL)
+#define SIGPROF LITERALLY(27)
+#define SIGPWR SYMBOLIC(SIGPWR)
+#define SIGQUIT LITERALLY(3)
+#define SIGRTMAX SYMBOLIC(SIGRTMAX)
+#define SIGRTMIN SYMBOLIC(SIGRTMIN)
+#define SIGSEGV LITERALLY(11)
+#define SIGSTKFLT SYMBOLIC(SIGSTKFLT)
+#define SIGSTKSZ SYMBOLIC(SIGSTKSZ)
+#define SIGSTOP SYMBOLIC(SIGSTOP)
+#define SIGSYS SYMBOLIC(SIGSYS)
+#define SIGTERM LITERALLY(15)
+#define SIGTRAP LITERALLY(5)
+#define SIGTSTP SYMBOLIC(SIGTSTP)
+#define SIGTTIN LITERALLY(21)
+#define SIGTTOU LITERALLY(22)
+#define SIGUNUSED SYMBOLIC(SIGUNUSED)
+#define SIGURG SYMBOLIC(SIGURG)
+#define SIGUSR1 SYMBOLIC(SIGUSR1)
+#define SIGUSR2 SYMBOLIC(SIGUSR2)
+#define SIGVTALRM LITERALLY(26)
+#define SIGWINCH LITERALLY(28)
+#define SIGXCPU LITERALLY(24)
+#define SIGXFSZ LITERALLY(25)
+
+#define SIG_ATOMIC_MIN SYMBOLIC(SIG_ATOMIC_MIN)
+#define SIG_BLOCK SYMBOLIC(SIG_BLOCK)
+#define SIG_SETMASK SYMBOLIC(SIG_SETMASK)
+#define SIG_UNBLOCK SYMBOLIC(SIG_UNBLOCK)
+
+
+#define EOF      -1  /* end of file */
+#define WEOF     -1u /* end of file (multibyte) */
+#define _IOFBF   0   /* fully buffered */
+#define _IOLBF   1   /* line buffered */
+#define _IONBF   2   /* no buffering */
+#define SEEK_SET 0   /* relative to beginning */
+#define SEEK_CUR 1   /* relative to current position */
+#define SEEK_END 2   /* relative to end */
+
+#define SIG_ERR ((void (*)(int))(-1))
+#define SIG_DFL ((void *)0)
+#define SIG_IGN ((void *)1)
+
+#define MAP_FAILED ((void *)__SIZE_MAX__)
+
+#define ARCH_SET_GS 0x1001
+#define ARCH_SET_FS 0x1002
+#define ARCH_GET_FS 0x1003
+#define ARCH_GET_GS 0x1004
+
+#define MAP_HUGE_2MB (21 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_1GB (30 << MAP_HUGE_SHIFT)
+
+#define S_ISDIR(mode)  (((mode)&S_IFMT) == S_IFDIR)
+#define S_ISCHR(mode)  (((mode)&S_IFMT) == S_IFCHR)
+#define S_ISBLK(mode)  (((mode)&S_IFMT) == S_IFBLK)
+#define S_ISREG(mode)  (((mode)&S_IFMT) == S_IFREG)
+#define S_ISFIFO(mode) (((mode)&S_IFMT) == S_IFIFO)
+#define S_ISLNK(mode)  (((mode)&S_IFMT) == S_IFLNK)
+#define S_ISSOCK(mode) (((mode)&S_IFMT) == S_IFSOCK)
+
+#define WCOREDUMP(s)    ((s)&0x80)
+#define WEXITSTATUS(s)  (((s)&0xff00) >> 8)
+#define WIFCONTINUED(s) ((s) == 0xffff)
+#define WIFEXITED(s)    (!WTERMSIG(s))
+#define WIFSIGNALED(s)  (((s)&0xffff) - 1u < 0xffu)
+#define WIFSTOPPED(s)   ((short)((((s)&0xffff) * 0x10001) >> 8) > 0x7f00)
+#define WSTOPSIG(s)     WEXITSTATUS(s)
+#define WTERMSIG(s)     ((s)&0x7f)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § system calls                                              ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+typedef int sig_atomic_t;
+
+DIR *fdopendir(int) nodiscard;
+DIR *opendir(const char *) nodiscard;
+bool fileexists(const char *);
+bool isdirectory(const char *);
+bool isexecutable(const char *);
+bool isregularfile(const char *);
+bool32 isatty(int) nosideeffect;
+bool32 ischardev(int) nosideeffect;
+char *commandv(const char *, char[hasatleast PATH_MAX]);
+char *get_current_dir_name(void) nodiscard;
+char *getcwd(char *, size_t);
+char *realpath(const char *, char *);
+char *replaceuser(const char *) nodiscard;
+char *ttyname(int);
+int access(const char *, int) nothrow;
+int arch_prctl();
+int chdir(const char *);
+int chmod(const char *, uint32_t);
+int chown(const char *, uint32_t, uint32_t);
+int close(int);
+int closedir(DIR *);
+int creat(const char *, uint32_t) nodiscard;
+int dirfd(DIR *);
+int dup(int) nodiscard;
+int dup2(int, int);
+int dup3(int, int, int);
+int execl(const char *, const char *, ...) nullterminated();
+int execle(const char *, const char *, ...) nullterminated((1));
+int execlp(const char *, const char *, ...) nullterminated();
+int execv(const char *, char *const[]) paramsnonnull();
+int execve(const char *, char *const[], char *const[]) paramsnonnull();
+int execvp(const char *, char *const[]) paramsnonnull();
+int execvpe(const char *, char *const[], char *const[]) paramsnonnull();
+int faccessat(int, const char *, int, uint32_t);
+int fadvise(int, uint64_t, uint64_t, int);
+int fchmod(int, uint32_t) nothrow;
+int fchmodat(int, const char *, uint32_t, uint32_t);
+int fchown(int, uint32_t, uint32_t);
+int fchownat(int, const char *, uint32_t, uint32_t, uint32_t);
+int fcntl(int, int, ...);
+int fdatasync(int);
+int filecmp(const char *, const char *);
+int flock(int, int);
+int fork(void);
+int fstat(int, struct stat *);
+int fstatat(int, const char *, struct stat *, uint32_t);
+int fsync(int);
+int ftruncate(int, int64_t);
+int getdomainname(char *, size_t);
+int gethostname(char *, size_t);
+int getppid(void);
+int getpriority(int, unsigned);
+int getrlimit(int, struct rlimit *);
+int getrusage(int, struct rusage *);
+int kill(int, int);
+int killpg(int, int);
+int link(const char *, const char *) nothrow;
+int linkat(int, const char *, int, const char *, uint32_t);
+int lstat(const char *, struct stat *);
+int madvise(void *, uint64_t, int);
+int mkdir(const char *, uint32_t);
+int mkdirat(int, const char *, uint32_t);
+int mkfifo(const char *, uint32_t);
+int mknod(const char *, uint32_t, uint64_t);
+int mknodat(int, const char *, int32_t, uint64_t);
+int mlock(const void *, size_t);
+int mlock2(const void *, size_t, int);
+int mlockall(int);
+int munlock(const void *, size_t);
+int munlockall(void);
+int nice(int);
+int open(const char *, int, ...) nodiscard;
+int openanon(char *, unsigned) nodiscard;
+int openat(int, const char *, int, ...);
+int pause(void);
+int personality(uint64_t);
+int pipe(int[hasatleast 2]);
+int pipe2(int[hasatleast 2], int);
+int posix_fadvise(int, uint64_t, uint64_t, int);
+int posix_madvise(void *, uint64_t, int);
+int raise(int);
+int readlink(const char *, char *, size_t);
+int remove(const char *);
+int rename(const char *, const char *);
+int renameat(int, const char *, int, const char *);
+int renameat2(long, const char *, long, const char *, int);
+int rmdir(const char *);
+int sched_getaffinity(int, uint64_t, void *);
+int sched_setaffinity(int, uint64_t, const void *);
+int sched_yield(void);
+int setegid(uint32_t);
+int seteuid(uint32_t);
+int setgid(uint32_t);
+int setpgid(int, int);
+int setpriority(int, unsigned, int);
+int setregid(uint32_t, uint32_t);
+int setresgid(uint32_t, uint32_t, uint32_t);
+int setresuid(uint32_t, uint32_t, uint32_t);
+int setreuid(uint32_t, uint32_t);
+int setrlimit(int, const struct rlimit *);
+int setsid(void);
+int setuid(uint32_t);
+int sigaction(int, const struct sigaction *, struct sigaction *);
+int sigignore(int);
+int sigprocmask(int, const struct sigset *, struct sigset *);
+int sigsuspend(const struct sigset *);
+int stat(const char *, struct stat *);
+int symlink(const char *, const char *);
+int symlinkat(const char *, int, const char *);
+int sync_file_range(int, int64_t, int64_t, unsigned);
+int sysinfo(struct sysinfo *) paramsnonnull();
+int touch(const char *, uint32_t);
+int truncate(const char *, uint64_t);
+int ttyname_r(int, char *, size_t);
+int uname(struct utsname *);
+int unlink(const char *);
+int unlink_s(const char **);
+int unlinkat(int, const char *, int);
+int vfork(void) returnstwice;
+int wait(int *);
+int wait3(int *, int, struct rusage *);
+int wait4(int, int *, int, struct rusage *);
+int waitpid(int, int *, int);
+ssize_t lseek(int, int64_t, unsigned);
+ssize_t pread(int, void *, size_t, int64_t);
+ssize_t preadv(int, struct iovec *, int, int64_t);
+ssize_t pwrite(int, const void *, size_t, int64_t);
+ssize_t pwritev(int, const struct iovec *, int, int64_t);
+intptr_t syscall(int, ...);
+void sync(void);
+long telldir(DIR *);
+int getpid(void);
+long times(struct tms *);
+sighandler_t signal(int, sighandler_t);
+size_t GetFileSize(const char *);
+size_t getfiledescriptorsize(int);
+ssize_t copy_file_range(int, long *, int, long *, size_t, uint32_t);
+ssize_t copyfd(int, int64_t *, int, int64_t *, size_t, uint32_t);
+ssize_t read(int, void *, size_t);
+ssize_t readansi(int, char *, size_t);
+ssize_t readlinkat(int, const char *, char *, size_t);
+ssize_t splice(int, int64_t *, int, int64_t *, size_t, uint32_t);
+ssize_t vmsplice(int, const struct iovec *, int64_t, uint32_t);
+ssize_t write(int, const void *, size_t);
+struct dirent *readdir(DIR *);
+uint32_t getegid(void) nosideeffect;
+uint32_t geteuid(void) nosideeffect;
+uint32_t getgid(void) nosideeffect;
+uint32_t getpgrp(void) nosideeffect;
+uint32_t getsid(int) nosideeffect;
+uint32_t gettid(void) nosideeffect;
+uint32_t getuid(void) nosideeffect;
+uint32_t umask(int32_t);
+long ptrace(int, int, void *, void *);
+int chroot(const char *);
+int prctl();
+int sysctl(const int *, unsigned, void *, size_t *, void *, size_t);
+int fchdir(int);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § system calls » formatting                                 ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+int dprintf(int, const char *, ...) printfesque(2) paramsnonnull((2));
+int vdprintf(int, const char *, va_list) paramsnonnull();
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § system calls » link-time optimizations                    ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+
+#define getcwd(BUF, SIZE)                                       \
+  (__builtin_constant_p(BUF) && !(BUF) ? get_current_dir_name() \
+                                       : getcwd(BUF, SIZE))
+
+void _init_onntconsoleevent(void);
+void _init_wincrash(void);
+
+#ifndef __SIGACTION_YOINK
+#define __SIGACTION_YOINK(SIG)             \
+  do {                                     \
+    if (SupportsWindows()) {               \
+      if (__builtin_constant_p(SIG)) {     \
+        switch (SIG) {                     \
+          case SIGINT:                     \
+          case SIGQUIT:                    \
+          case SIGHUP:                     \
+          case SIGTERM:                    \
+            YOINK(_init_onntconsoleevent); \
+            break;                         \
+          case SIGTRAP:                    \
+          case SIGILL:                     \
+          case SIGSEGV:                    \
+          case SIGABRT:                    \
+          case SIGFPE:                     \
+            YOINK(_init_wincrash);         \
+            break;                         \
+          default:                         \
+            break;                         \
+        }                                  \
+      } else {                             \
+        YOINK(_init_onntconsoleevent);     \
+        YOINK(_init_wincrash);             \
+      }                                    \
+    }                                      \
+  } while (0)
+#endif
+
+#define sigaction(SIG, ACT, OLD) \
+  ({                             \
+    __SIGACTION_YOINK(SIG);      \
+    sigaction(SIG, (ACT), OLD);  \
+  })
+
+#define signal(SIG, HAND)   \
+  ({                        \
+    __SIGACTION_YOINK(SIG); \
+    signal(SIG, HAND);      \
+  })
+
+#define dprintf(FD, FMT, ...) (dprintf)(FD, PFLINK(FMT), ##__VA_ARGS__)
+#define vdprintf(FD, FMT, VA) (vdprintf)(FD, PFLINK(FMT), VA)
+
+#endif /* GNU && !ANSI */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/copyfile.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_COPYFILE_H_
+
+#define COPYFILE_NOCLOBBER           1
+#define COPYFILE_PRESERVE_OWNER      2
+#define COPYFILE_PRESERVE_TIMESTAMPS 4
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int copyfile(const char *, const char *, int) paramsnonnull();
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/ioctl.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_IOCTL_H_
+
+
+/*!BEGIN libc/sysv/consts/termios.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_TERMIOS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long BRKINT;
+extern const long BSDLY;
+extern const long BUSY;
+extern const long CANBSIZ;
+extern const long CBAUD;
+extern const long CBAUDEX;
+extern const long CBRK;
+extern const long CEOL;
+extern const long CIBAUD;
+extern const long CLOCAL;
+extern const long CMSPAR;
+extern const long CRDLY;
+extern const long CS6;
+extern const long CS7;
+extern const long CS8;
+extern const long CSIZE;
+extern const long ECHO;
+extern const long ECHOCTL;
+extern const long ECHOE;
+extern const long ECHOK;
+extern const long ECHOKE;
+extern const long ECHONL;
+extern const long ECHOPRT;
+extern const long ENDRUNDISC;
+extern const long EXTPROC;
+extern const long FFDLY;
+extern const long FLUSHO;
+extern const long H4DISC;
+extern const long ICANON;
+extern const long ICRNL;
+extern const long IEXTEN;
+extern const long IGNBRK;
+extern const long IGNCR;
+extern const long IGNPAR;
+extern const long IMAXBEL;
+extern const long INLCR;
+extern const long INPCK;
+extern const long ISIG;
+extern const long ISTRIP;
+extern const long IUCLC;
+extern const long IUTF8;
+extern const long IXANY;
+extern const long IXOFF;
+extern const long IXON;
+extern const long NCCS;
+extern const long NETGRAPHDISC;
+extern const long NLDLY;
+extern const long NMEADISC;
+extern const long NOFLSH;
+extern const long OCRNL;
+extern const long OFDEL;
+extern const long OFILL;
+extern const long OLCUC;
+extern const long ONLCR;
+extern const long ONLRET;
+extern const long ONOCR;
+extern const long OPOST;
+extern const long PARENB;
+extern const long PARMRK;
+extern const long PARODD;
+extern const long PENDIN;
+extern const long PPPDISC;
+extern const long SLIPDISC;
+extern const long STRIPDISC;
+extern const long TABDLY;
+extern const long TABLDISC;
+extern const long TCGETS;
+extern const long TCSADRAIN;
+extern const long TCSAFLUSH;
+extern const long TCSANOW;
+extern const long TCSETS;
+extern const long TCSETSF;
+extern const long TCSETSW;
+extern const long TIOCCBRK;
+extern const long TIOCCDTR;
+extern const long TIOCCHKVERAUTH;
+extern const long TIOCCONS;
+extern const long TIOCDRAIN;
+extern const long TIOCEXT;
+extern const long TIOCFLAG_CLOCAL;
+extern const long TIOCFLAG_MDMBUF;
+extern const long TIOCFLAG_PPS;
+extern const long TIOCFLAG_SOFTCAR;
+extern const long TIOCFLUSH;
+extern const long TIOCGDRAINWAIT;
+extern const long TIOCGETD;
+extern const long TIOCGFLAGS;
+extern const long TIOCGPGRP;
+extern const long TIOCGPTN;
+extern const long TIOCGSID;
+extern const long TIOCGTSTAMP;
+extern const long TIOCGWINSZ;
+extern const long TIOCNOTTY;
+extern const long TIOCNXCL;
+extern const long TIOCOUTQ;
+extern const long TIOCPTMASTER;
+extern const long TIOCREMOTE;
+extern const long TIOCSBRK;
+extern const long TIOCSCTTY;
+extern const long TIOCSDRAINWAIT;
+extern const long TIOCSDTR;
+extern const long TIOCSERGETLSR;
+extern const long TIOCSERGETMULTI;
+extern const long TIOCSERSETMULTI;
+extern const long TIOCSER_TEMT;
+extern const long TIOCSETD;
+extern const long TIOCSETVERAUTH;
+extern const long TIOCSFLAGS;
+extern const long TIOCSIG;
+extern const long TIOCSPGRP;
+extern const long TIOCSTART;
+extern const long TIOCSTAT;
+extern const long TIOCSTI;
+extern const long TIOCSTSTAMP;
+extern const long TIOCSWINSZ;
+extern const long TIOCTIMESTAMP;
+extern const long TIOCUCNTL_CBRK;
+extern const long TOSTOP;
+extern const long TTYDISC;
+extern const long VDISCARD;
+extern const long VEOF;
+extern const long VEOL;
+extern const long VEOL2;
+extern const long VERASE;
+extern const long VERIFY;
+extern const long VINTR;
+extern const long VKILL;
+extern const long VLNEXT;
+extern const long VMIN;
+extern const long VQUIT;
+extern const long VREPRINT;
+extern const long VSTART;
+extern const long VSTOP;
+extern const long VSUSP;
+extern const long VSWTC;
+extern const long VTDLY;
+extern const long VTIME;
+extern const long VWERASE;
+extern const long XCASE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define IGNBRK  LITERALLY(0x01)
+#define BRKINT  LITERALLY(0x02)
+#define IGNPAR  LITERALLY(0x04)
+#define PARMRK  LITERALLY(0x08)
+#define INPCK   LITERALLY(0x10)
+#define ISTRIP  LITERALLY(0x20)
+#define INLCR   LITERALLY(0x40)
+#define IGNCR   LITERALLY(0x80)
+#define ICRNL   LITERALLY(0x0100)
+#define IXANY   LITERALLY(0x0800)
+#define IMAXBEL LITERALLY(0x2000)
+#define OPOST   LITERALLY(0x01)
+
+#define NLDLY  SYMBOLIC(NLDLY)
+#define NL0    LITERALLY(0)
+#define NL1    SYMBOLIC(NL1)
+#define NL2    SYMBOLIC(NL2)
+#define NL3    SYMBOLIC(NL3)
+#define CRDLY  SYMBOLIC(CRDLY)
+#define CR0    LITERALLY(0)
+#define CR1    SYMBOLIC(CR1)
+#define CR2    SYMBOLIC(CR2)
+#define CR3    SYMBOLIC(CR3)
+#define TABDLY SYMBOLIC(TABDLY)
+#define TAB0   LITERALLY(0)
+#define TAB1   SYMBOLIC(TAB1)
+#define TAB2   SYMBOLIC(TAB2)
+#define TAB3   SYMBOLIC(TAB3)
+#define XTABS  SYMBOLIC(XTABS)
+#define BSDLY  SYMBOLIC(BSDLY)
+#define BS0    LITERALLY(0)
+#define BS1    SYMBOLIC(BS1)
+#define BS2    SYMBOLIC(BS2)
+#define VTDLY  SYMBOLIC(VTDLY)
+#define VT0    LITERALLY(0)
+#define VT1    SYMBOLIC(VT1)
+#define VT2    SYMBOLIC(VT2)
+#define FFDLY  SYMBOLIC(FFDLY)
+#define FF0    LITERALLY(0)
+#define FF1    SYMBOLIC(FF1)
+#define FF2    SYMBOLIC(FF2)
+
+#define BUSY             SYMBOLIC(BUSY)
+#define CANBSIZ          SYMBOLIC(CANBSIZ)
+#define CBAUD            SYMBOLIC(CBAUD)
+#define CBAUDEX          SYMBOLIC(CBAUDEX)
+#define CBRK             SYMBOLIC(CBRK)
+#define CEOL             SYMBOLIC(CEOL)
+#define CIBAUD           SYMBOLIC(CIBAUD)
+#define CLOCAL           SYMBOLIC(CLOCAL)
+#define CMSPAR           SYMBOLIC(CMSPAR)
+#define CS6              SYMBOLIC(CS6)
+#define CS7              SYMBOLIC(CS7)
+#define CS8              SYMBOLIC(CS8)
+#define CSIZE            SYMBOLIC(CSIZE)
+#define ECHO             LITERALLY(8)
+#define ECHOCTL          SYMBOLIC(ECHOCTL)
+#define ECHOE            SYMBOLIC(ECHOE)
+#define ECHOK            SYMBOLIC(ECHOK)
+#define ECHOKE           SYMBOLIC(ECHOKE)
+#define ECHONL           SYMBOLIC(ECHONL)
+#define ECHOPRT          SYMBOLIC(ECHOPRT)
+#define ENDRUNDISC       SYMBOLIC(ENDRUNDISC)
+#define EXTPROC          SYMBOLIC(EXTPROC)
+#define FLUSHO           SYMBOLIC(FLUSHO)
+#define H4DISC           SYMBOLIC(H4DISC)
+#define ICANON           SYMBOLIC(ICANON)
+#define IEXTEN           SYMBOLIC(IEXTEN)
+#define ISIG             SYMBOLIC(ISIG)
+#define IUCLC            SYMBOLIC(IUCLC)
+#define IUTF8            SYMBOLIC(IUTF8)
+#define IXOFF            SYMBOLIC(IXOFF)
+#define IXON             SYMBOLIC(IXON)
+#define NCCS             LITERALLY(32)
+#define NETGRAPHDISC     SYMBOLIC(NETGRAPHDISC)
+#define NMEADISC         SYMBOLIC(NMEADISC)
+#define NOFLSH           SYMBOLIC(NOFLSH)
+#define OCRNL            SYMBOLIC(OCRNL)
+#define OFDEL            SYMBOLIC(OFDEL)
+#define OFILL            SYMBOLIC(OFILL)
+#define OLCUC            SYMBOLIC(OLCUC)
+#define ONLCR            SYMBOLIC(ONLCR)
+#define ONLRET           SYMBOLIC(ONLRET)
+#define ONOCR            SYMBOLIC(ONOCR)
+#define PARENB           SYMBOLIC(PARENB)
+#define PARODD           SYMBOLIC(PARODD)
+#define PENDIN           SYMBOLIC(PENDIN)
+#define PPPDISC          SYMBOLIC(PPPDISC)
+#define SLIPDISC         SYMBOLIC(SLIPDISC)
+#define STRIPDISC        SYMBOLIC(STRIPDISC)
+#define TABLDISC         SYMBOLIC(TABLDISC)
+#define TCGETS           SYMBOLIC(TCGETS)
+#define TCSANOW          LITERALLY(0)
+#define TCSADRAIN        LITERALLY(1)
+#define TCSAFLUSH        LITERALLY(2)
+#define TCSETS           SYMBOLIC(TCSETS)
+#define TCSETSF          SYMBOLIC(TCSETSF)
+#define TCSETSW          SYMBOLIC(TCSETSW)
+#define TIOCCBRK         SYMBOLIC(TIOCCBRK)
+#define TIOCCDTR         SYMBOLIC(TIOCCDTR)
+#define TIOCCHKVERAUTH   SYMBOLIC(TIOCCHKVERAUTH)
+#define TIOCCONS         SYMBOLIC(TIOCCONS)
+#define TIOCDRAIN        SYMBOLIC(TIOCDRAIN)
+#define TIOCEXT          SYMBOLIC(TIOCEXT)
+#define TIOCFLAG_CLOCAL  SYMBOLIC(TIOCFLAG_CLOCAL)
+#define TIOCFLAG_MDMBUF  SYMBOLIC(TIOCFLAG_MDMBUF)
+#define TIOCFLAG_PPS     SYMBOLIC(TIOCFLAG_PPS)
+#define TIOCFLAG_SOFTCAR SYMBOLIC(TIOCFLAG_SOFTCAR)
+#define TIOCFLUSH        SYMBOLIC(TIOCFLUSH)
+#define TIOCGDRAINWAIT   SYMBOLIC(TIOCGDRAINWAIT)
+#define TIOCGETD         SYMBOLIC(TIOCGETD)
+#define TIOCGFLAGS       SYMBOLIC(TIOCGFLAGS)
+#define TIOCGPGRP        SYMBOLIC(TIOCGPGRP)
+#define TIOCGPTN         SYMBOLIC(TIOCGPTN)
+#define TIOCGSID         SYMBOLIC(TIOCGSID)
+#define TIOCGTSTAMP      SYMBOLIC(TIOCGTSTAMP)
+#define TIOCGWINSZ       SYMBOLIC(TIOCGWINSZ)
+#define TIOCNOTTY        SYMBOLIC(TIOCNOTTY)
+#define TIOCNXCL         SYMBOLIC(TIOCNXCL)
+#define TIOCOUTQ         SYMBOLIC(TIOCOUTQ)
+#define TIOCPTMASTER     SYMBOLIC(TIOCPTMASTER)
+#define TIOCREMOTE       SYMBOLIC(TIOCREMOTE)
+#define TIOCSBRK         SYMBOLIC(TIOCSBRK)
+#define TIOCSCTTY        SYMBOLIC(TIOCSCTTY)
+#define TIOCSDRAINWAIT   SYMBOLIC(TIOCSDRAINWAIT)
+#define TIOCSDTR         SYMBOLIC(TIOCSDTR)
+#define TIOCSERGETLSR    SYMBOLIC(TIOCSERGETLSR)
+#define TIOCSERGETMULTI  SYMBOLIC(TIOCSERGETMULTI)
+#define TIOCSERSETMULTI  SYMBOLIC(TIOCSERSETMULTI)
+#define TIOCSER_TEMT     SYMBOLIC(TIOCSER_TEMT)
+#define TIOCSETD         SYMBOLIC(TIOCSETD)
+#define TIOCSETVERAUTH   SYMBOLIC(TIOCSETVERAUTH)
+#define TIOCSFLAGS       SYMBOLIC(TIOCSFLAGS)
+#define TIOCSIG          SYMBOLIC(TIOCSIG)
+#define TIOCSPGRP        SYMBOLIC(TIOCSPGRP)
+#define TIOCSTART        SYMBOLIC(TIOCSTART)
+#define TIOCSTAT         SYMBOLIC(TIOCSTAT)
+#define TIOCSTI          SYMBOLIC(TIOCSTI)
+#define TIOCSTSTAMP      SYMBOLIC(TIOCSTSTAMP)
+#define TIOCSWINSZ       SYMBOLIC(TIOCSWINSZ)
+#define TIOCTIMESTAMP    SYMBOLIC(TIOCTIMESTAMP)
+#define TIOCUCNTL_CBRK   SYMBOLIC(TIOCUCNTL_CBRK)
+#define TOSTOP           SYMBOLIC(TOSTOP)
+#define TTYDISC          SYMBOLIC(TTYDISC)
+#define VDISCARD         SYMBOLIC(VDISCARD)
+#define VEOF             SYMBOLIC(VEOF)
+#define VEOL             SYMBOLIC(VEOL)
+#define VEOL2            SYMBOLIC(VEOL2)
+#define VERASE           SYMBOLIC(VERASE)
+#define VERIFY           SYMBOLIC(VERIFY)
+#define VINTR            SYMBOLIC(VINTR)
+#define VKILL            SYMBOLIC(VKILL)
+#define VLNEXT           SYMBOLIC(VLNEXT)
+#define VMIN             SYMBOLIC(VMIN)
+#define VQUIT            SYMBOLIC(VQUIT)
+#define VREPRINT         SYMBOLIC(VREPRINT)
+#define VSTART           SYMBOLIC(VSTART)
+#define VSTOP            SYMBOLIC(VSTOP)
+#define VSUSP            SYMBOLIC(VSUSP)
+#define VSWTC            SYMBOLIC(VSWTC)
+#define VTIME            SYMBOLIC(VTIME)
+#define VWERASE          SYMBOLIC(VWERASE)
+#define XCASE            SYMBOLIC(XCASE)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § system calls » ioctl                                      ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+int ioctl(int, uint64_t, void *);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § system calls » ioctl » undiamonding (size optimization)   ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+
+#define ioctl(FD, REQUEST, MEMORY) ioctl_dispatch(FD, REQUEST, MEMORY)
+
+#define __EQUIVALENT(X, Y) (__builtin_constant_p((X) == (Y)) && ((X) == (Y)))
+#define __IOCTL_DISPATCH(CMP, FD, REQUEST, MEMORY)                       \
+  do {                                                                   \
+    if (CMP(request, TIOCGWINSZ)) return ioctl_tiocgwinsz(FD, MEMORY);   \
+    if (CMP(request, TIOCSWINSZ)) return ioctl_tiocswinsz(FD, MEMORY);   \
+    if (CMP(request, TCGETS)) return ioctl_tcgets(FD, MEMORY);           \
+    if (CMP(request, TCSETS)) return ioctl_tcsets(FD, REQUEST, MEMORY);  \
+    if (CMP(request, TCSETSW)) return ioctl_tcsets(FD, REQUEST, MEMORY); \
+    if (CMP(request, TCSETSF)) return ioctl_tcsets(FD, REQUEST, MEMORY); \
+  } while (0)
+
+int ioctl_tcgets(int, void *);
+int ioctl_tcgets_nt(int, void *);
+int ioctl_tcsets(int, uint64_t, void *);
+int ioctl_tcsets_nt(int, uint64_t, void *);
+int ioctl_tiocgwinsz(int, void *);
+int ioctl_tiocgwinsz_nt(int, void *);
+int ioctl_tiocswinsz(int, void *);
+int ioctl_tiocswinsz_nt(int, void *);
+int ioctl_default(int, uint64_t, void *);
+
+forceinline int ioctl_dispatch(int fd, uint64_t request, void *memory) {
+  __IOCTL_DISPATCH(__EQUIVALENT, fd, request, memory);
+  return ioctl_default(fd, request, memory);
+}
+
+#endif /* GNUC && !ANSI */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/ntspawn.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_NTSPAWN_H_
+
+
+/*!BEGIN libc/nt/struct/processinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_PROCESSINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtProcessInformation {
+  int64_t hProcess;
+  int64_t hThread;
+  uint32_t dwProcessId;
+  uint32_t dwThreadId;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/securityattributes.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SECURITYATTRIBUTES_H_
+
+
+/*!BEGIN libc/nt/struct/securitydescriptor.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SECURITYDESCRIPTOR_H_
+
+
+/*!BEGIN libc/nt/struct/acl.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_ACL_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtAcl {
+  uint8_t AclRevision;
+  uint8_t Sbz1;
+  uint16_t AclSize;
+  uint16_t AceCount;
+  uint16_t Sbz2;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSecurityDescriptor {
+  uint8_t Revision;
+  uint8_t Sbz1;
+  uint16_t Control;
+  void *Owner;
+  void *Group;
+  struct NtAcl *Sacl;
+  struct NtAcl *Dacl;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSecurityAttributes {
+  uint32_t nLength;
+  struct NtSecurityDescriptor *lpSecurityDescriptor;
+  bool32 bInheritHandle;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/startupinfo.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_STARTUPINFO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtStartupInfo {
+  uint32_t cb /* = sizeof(struct NtStartupInfo) */;
+  uint16_t *lpReserved;
+  char16_t *lpDesktop;
+  char16_t *lpTitle; /* title of *new* console window only */
+  uint32_t dwX;      /* position of window on screen */
+  uint32_t dwY;
+  uint32_t dwXSize;
+  uint32_t dwYSize;
+  uint32_t dwXCountChars; /* used to dimension the dos terminal */
+  uint32_t dwYCountChars;
+  uint32_t dwFillAttribute;
+  uint32_t dwFlags;
+  uint16_t wShowWindow;
+  uint16_t cbReserved2;
+  uint8_t *lpReserved2;
+  union {
+    struct {
+      int64_t hStdInput;
+      int64_t hStdOutput;
+      int64_t hStdError;
+    };
+    int64_t stdiofds[3];
+  };
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int mkntcmdline(char16_t[ARG_MAX], const char *, char *const[]) hidden;
+int mkntenvblock(char16_t[ARG_MAX], char *const[], const char *) hidden;
+int ntspawn(const char *, char *const[], char *const[], const char *,
+            struct NtSecurityAttributes *, struct NtSecurityAttributes *,
+            bool32, uint32_t, const char16_t *, const struct NtStartupInfo *,
+            struct NtProcessInformation *) hidden;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/scheduler.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_SCHED_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int sched_setscheduler(int, int, const struct sched_param *);
+int sched_getscheduler(int);
+int sched_setparam(int, const struct sched_param *);
+int sched_getparam(int, struct sched_param *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/sigbits.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_SIGBITS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int sigaddset(sigset_t *, int) paramsnonnull();
+int sigdelset(sigset_t *, int) paramsnonnull();
+int sigemptyset(sigset_t *) paramsnonnull();
+int sigfillset(sigset_t *) paramsnonnull();
+int sigismember(const sigset_t *, int) paramsnonnull() nosideeffect;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/termios.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_TERMIOS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § teletypewriter control                                    ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+int tcgetattr(int, struct termios *);
+int tcsetattr(int, int, const struct termios *);
+int tcsetpgrp(int, int32_t);
+int32_t tcgetpgrp(int);
+
+int openpty(int *, int *, char *, const struct termios *,
+            const struct winsize *) paramsnonnull((1, 2)) nodiscard;
+int forkpty(int *, char *, const struct termios *, const struct winsize *)
+    paramsnonnull((1, 2)) nodiscard;
+errno_t ptsname_r(int, char *, size_t);
+
+int grantpt(int);
+int unlockpt(int);
+int posix_openpt(int) nodiscard;
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § teletypewriter » undiamonding                             ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+
+#define tcsetattr(FD, OPT, TIO) tcsetattr_dispatch(FD, OPT, TIO)
+forceinline int tcsetattr_dispatch(int fd, int opt, const struct termios *tio) {
+  if (__EQUIVALENT(opt, TCSANOW)) return ioctl(fd, TCSETS, (void *)tio);
+  if (__EQUIVALENT(opt, TCSADRAIN)) return ioctl(fd, TCSETSW, (void *)tio);
+  if (__EQUIVALENT(opt, TCSAFLUSH)) return ioctl(fd, TCSETSF, (void *)tio);
+  return (tcsetattr)(fd, opt, tio);
+}
+
+#define tcgetattr(FD, TIO) tcgetattr_dispatch(FD, TIO)
+forceinline int tcgetattr_dispatch(int fd, const struct termios *tio) {
+  return ioctl(fd, TCGETS, (void *)tio);
+}
+
+#endif /* GNUC && !ANSI */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/wait4.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_WAIT4_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int sys_wait4_nt(int, int *, int, struct rusage *) hidden;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/weirdtypes.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_WEIRDTYPES_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+/**
+ * @fileoverview Types we'd prefer hadn't been invented.
+ */
+
+#define blkcnt_t      int64_t
+#define blksize_t     int64_t /* int32_t on xnu */
+#define cc_t          uint8_t
+#define clock_t       int64_t /* uint64_t on xnu */
+#define cpu_set_t     uint64_t
+#define dev_t         uint64_t /* int32_t on xnu */
+#define fsblkcnt_t    int64_t
+#define fsfilcnt_t    int64_t /* uint32_t on xnu */
+#define gid_t         uint32_t
+#define id_t          uint32_t /* int32_t on linux/freebsd/etc. */
+#define in_addr_t     uint32_t
+#define in_addr_t     uint32_t
+#define in_port_t     uint16_t
+#define in_port_t     uint16_t
+#define ino_t         uint64_t
+#define key_t         int32_t
+#define loff_t        int64_t
+#define mode_t        uint32_t /* uint16_t on xnu */
+#define nfds_t        uint64_t
+#define off_t         int64_t
+#define pid_t         int32_t
+#define register_t    int64_t
+#define sa_family_t   uint16_t /* bsd:uint8_t */
+#define socklen_t     uint32_t
+#define speed_t       uint32_t
+#define suseconds_t   int64_t /* int32_t on xnu */
+#define syscall_arg_t int64_t /* uint64_t on xnu */
+#define tcflag_t      uint32_t
+#define time_t        int64_t
+#define timer_t       void*
+#define uid_t         uint32_t
+
+#define int_fast8_t   __INT_FAST8_TYPE__
+#define uint_fast8_t  __UINT_FAST8_TYPE__
+#define int_fast16_t  __INT_FAST16_TYPE__
+#define uint_fast16_t __UINT_FAST16_TYPE__
+#define int_fast32_t  __INT_FAST32_TYPE__
+#define uint_fast32_t __UINT_FAST32_TYPE__
+#define int_fast64_t  __INT_FAST64_TYPE__
+#define uint_fast64_t __UINT_FAST64_TYPE__
+
+#define atomic_bool           _Atomic(_Bool)
+#define atomic_bool32         atomic_int_fast32_t
+#define atomic_char           _Atomic(char)
+#define atomic_schar          _Atomic(signed char)
+#define atomic_uchar          _Atomic(unsigned char)
+#define atomic_short          _Atomic(short)
+#define atomic_ushort         _Atomic(unsigned short)
+#define atomic_int            _Atomic(int)
+#define atomic_uint           _Atomic(unsigned int)
+#define atomic_long           _Atomic(long)
+#define atomic_ulong          _Atomic(unsigned long)
+#define atomic_llong          _Atomic(long long)
+#define atomic_ullong         _Atomic(unsigned long long)
+#define atomic_char16_t       _Atomic(char16_t)
+#define atomic_char32_t       _Atomic(char32_t)
+#define atomic_wchar_t        _Atomic(wchar_t)
+#define atomic_int_least8_t   _Atomic(int_least8_t)
+#define atomic_uint_least8_t  _Atomic(uint_least8_t)
+#define atomic_int_least16_t  _Atomic(int_least16_t)
+#define atomic_uint_least16_t _Atomic(uint_least16_t)
+#define atomic_int_least32_t  _Atomic(int_least32_t)
+#define atomic_uint_least32_t _Atomic(uint_least32_t)
+#define atomic_int_least64_t  _Atomic(int_least64_t)
+#define atomic_uint_least64_t _Atomic(uint_least64_t)
+#define atomic_int_fast8_t    _Atomic(int_fast8_t)
+#define atomic_uint_fast8_t   _Atomic(uint_fast8_t)
+#define atomic_int_fast16_t   _Atomic(int_fast16_t)
+#define atomic_uint_fast16_t  _Atomic(uint_fast16_t)
+#define atomic_int_fast32_t   _Atomic(int_fast32_t)
+#define atomic_uint_fast32_t  _Atomic(uint_fast32_t)
+#define atomic_int_fast64_t   _Atomic(int_fast64_t)
+#define atomic_uint_fast64_t  _Atomic(uint_fast64_t)
+#define atomic_intptr_t       _Atomic(intptr_t)
+#define atomic_uintptr_t      _Atomic(uintptr_t)
+#define atomic_size_t         _Atomic(size_t)
+#define atomic_ptrdiff_t      _Atomic(ptrdiff_t)
+
+#ifdef __CLANG_ATOMIC_BOOL_LOCK_FREE
+#define ATOMIC_BOOL_LOCK_FREE     __CLANG_ATOMIC_BOOL_LOCK_FREE
+#define ATOMIC_CHAR_LOCK_FREE     __CLANG_ATOMIC_CHAR_LOCK_FREE
+#define ATOMIC_CHAR16_T_LOCK_FREE __CLANG_ATOMIC_CHAR16_T_LOCK_FREE
+#define ATOMIC_CHAR32_T_LOCK_FREE __CLANG_ATOMIC_CHAR32_T_LOCK_FREE
+#define ATOMIC_WCHAR_T_LOCK_FREE  __CLANG_ATOMIC_WCHAR_T_LOCK_FREE
+#define ATOMIC_SHORT_LOCK_FREE    __CLANG_ATOMIC_SHORT_LOCK_FREE
+#define ATOMIC_INT_LOCK_FREE      __CLANG_ATOMIC_INT_LOCK_FREE
+#define ATOMIC_LONG_LOCK_FREE     __CLANG_ATOMIC_LONG_LOCK_FREE
+#define ATOMIC_LLONG_LOCK_FREE    __CLANG_ATOMIC_LLONG_LOCK_FREE
+#define ATOMIC_POINTER_LOCK_FREE  __CLANG_ATOMIC_POINTER_LOCK_FREE
+#else
+#define ATOMIC_BOOL_LOCK_FREE     __GCC_ATOMIC_BOOL_LOCK_FREE
+#define ATOMIC_CHAR_LOCK_FREE     __GCC_ATOMIC_CHAR_LOCK_FREE
+#define ATOMIC_CHAR16_T_LOCK_FREE __GCC_ATOMIC_CHAR16_T_LOCK_FREE
+#define ATOMIC_CHAR32_T_LOCK_FREE __GCC_ATOMIC_CHAR32_T_LOCK_FREE
+#define ATOMIC_WCHAR_T_LOCK_FREE  __GCC_ATOMIC_WCHAR_T_LOCK_FREE
+#define ATOMIC_SHORT_LOCK_FREE    __GCC_ATOMIC_SHORT_LOCK_FREE
+#define ATOMIC_INT_LOCK_FREE      __GCC_ATOMIC_INT_LOCK_FREE
+#define ATOMIC_LONG_LOCK_FREE     __GCC_ATOMIC_LONG_LOCK_FREE
+#define ATOMIC_LLONG_LOCK_FREE    __GCC_ATOMIC_LLONG_LOCK_FREE
+#define ATOMIC_POINTER_LOCK_FREE  __GCC_ATOMIC_POINTER_LOCK_FREE
+#endif
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/calls/xattr.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_XATTR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+ssize_t flistxattr(int, char *, size_t);
+ssize_t fgetxattr(int, const char *, void *, size_t);
+int fsetxattr(int, const char *, const void *, size_t, int);
+int fremovexattr(int, const char *);
+ssize_t listxattr(const char *, char *, size_t);
+ssize_t getxattr(const char *, const char *, void *, size_t);
+int setxattr(const char *, const char *, const void *, size_t, int);
+int removexattr(const char *, const char *);
+ssize_t llistxattr(const char *, char *, size_t);
+ssize_t lgetxattr(const char *, const char *, void *, size_t);
+int lsetxattr(const char *, const char *, const void *, size_t, int);
+int lremovexattr(const char *, const char *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/crypto/rijndael.h */
+
+#define COSMOPOLITAN_LIBC_CRYPTO_RIJNDAEL_H_
+#ifndef __STRICT_ANSI__
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § cryptography » advanced encryption standard               ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─┘
+    AES-256 Latency                                  x86 2010+    SSE2
+    ───────────────                                  ─────────   ──────
+    rijndael(14, block, &ctx)                           23 ns    218 ns
+    unrijndael(14, block, &ctx)                         23 ns    690 ns
+    rijndaelinit(&ctx, 14, k1, k2)                     136 ns    135 ns
+    unrijndaelinit(&ctx, 14, k1, k2)                   186 ns    639 ns
+
+    Untrustworthy System Viability                   x86 2010+    SSE2
+    ──────────────────────────────                   ─────────   ──────
+    rijndael(14, block, &ctx)                             A        C
+    unrijndael(14, block, &ctx)                           A        C
+    rijndaelinit(&ctx, 14, k1, k2)                        B        B
+    unrijndaelinit(&ctx, 14, k1, k2)                      B        C
+
+    Comparison                                   Cosmo    Rijndael  Tiny-AES
+    ──────────────────────────────              ───────   ────────  ────────
+    Generalized Math                               Yes        Yes       No
+    Footprint                                  1,782 b    9,258 b     903 b
+    Performance (New Hardware)                   ~20 ns     ~40 ns   ~400 ns
+    Performance (Old Hardware)                  ~400 ns     ~40 ns   ~400 ns */
+
+typedef uint32_t aes_block_t _Vector_size(16) forcealign(16);
+
+struct Rijndael {
+  union {
+    aes_block_t xmm;
+    uint32_t u32[4];
+    uint8_t u8[16];
+  } rk[15];
+};
+
+void rijndaelinit(struct Rijndael *, uint32_t, aes_block_t, aes_block_t);
+aes_block_t rijndael(uint32_t, aes_block_t, const struct Rijndael *);
+void unrijndaelinit(struct Rijndael *, uint32_t, aes_block_t, aes_block_t);
+aes_block_t unrijndael(uint32_t, aes_block_t, const struct Rijndael *);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § cryptography » implementation details                     ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+extern const uint8_t kAesSbox[256] forcealign(64);
+extern const uint8_t kAesSboxInverse[256] forcealign(64);
+
+aes_block_t InvMixColumns(aes_block_t) hidden;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#endif /* !ANSI */
+
+
+/*!BEGIN libc/dns/consts.h */
+
+#define COSMOPOLITAN_LIBC_DNS_CONSTS_H_
+
+
+/*!BEGIN libc/sock/sock.h */
+
+#define COSMOPOLITAN_LIBC_SOCK_SOCK_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § system api » berkeley sockets                             ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define INET_ADDRSTRLEN 22
+
+#define NI_DGRAM   0x10
+#define NI_MAXSERV 0x20
+
+#define htons(u16) bswap_16(u16)
+#define ntohs(u16) bswap_16(u16)
+#define htonl(u32) bswap_32(u32)
+#define ntohl(u32) bswap_32(u32)
+
+struct iovec;
+struct sigset;
+struct timespec;
+struct timeval;
+struct addrinfo;
+
+struct in_addr { /* ARPA ABI */
+  /* e.g. 127|0<<8|0<<16|1<<24 or inet_pton(AF_INET, "127.0.0.1", &s_addr) */
+  uint32_t s_addr;
+};
+
+struct sockaddr {     /* Linux+NT ABI */
+  uint16_t sa_family; /* AF_XXX */
+  char sa_data[14];
+};
+
+struct sockaddr_in {   /* Linux+NT ABI */
+  uint16_t sin_family; /* AF_XXX */
+  uint16_t sin_port;   /* htons(XXX) i.e. big endian */
+  struct in_addr sin_addr;
+  uint8_t sin_zero[8];
+};
+
+struct sockaddr_storage {
+  union {
+    uint16_t ss_family;
+    intptr_t __ss_align;
+    char __ss_storage[128];
+  };
+};
+
+struct pollfd {
+  int32_t fd;
+  int16_t events;
+  int16_t revents;
+};
+
+struct msghdr {            /* Linux+NT ABI */
+  void *msg_name;          /* optional address */
+  int32_t msg_namelen;     /* size of msg_name */
+  struct iovec *msg_iov;   /* scatter/gather array */
+  uint64_t msg_iovlen;     /* iovec count */
+  void *msg_control;       /* credentials and stuff */
+  uint64_t msg_controllen; /* size of msg_control */
+  uint32_t msg_flags;      /* MSG_XXX */
+};
+
+const char *inet_ntop(int, const void *, char *, uint32_t);
+int inet_aton(const char *, struct in_addr *);
+int inet_pton(int, const char *, void *);
+uint32_t inet_addr(const char *);
+char *inet_ntoa(struct in_addr);
+int parseport(const char *);
+
+int socket(int, int, int) nodiscard;
+int accept(int, void *, uint32_t *) nodiscard;
+int accept4(int, void *, uint32_t *, int) nodiscard;
+int bind(int, const void *, uint32_t);
+int connect(int, const void *, uint32_t);
+int socketconnect(const struct addrinfo *, int);
+int listen(int, int);
+int shutdown(int, int);
+int getsockname(int, void *, uint32_t *) paramsnonnull();
+int getpeername(int, void *, uint32_t *) paramsnonnull();
+ssize_t send(int, const void *, size_t, int) paramsnonnull();
+ssize_t recv(int, void *, size_t, int);
+ssize_t recvmsg(int, struct msghdr *, uint32_t) paramsnonnull();
+ssize_t recvfrom(int, void *, size_t, uint32_t, void *, uint32_t *);
+ssize_t sendmsg(int, const struct msghdr *, int) paramsnonnull();
+ssize_t readv(int, const struct iovec *, int);
+ssize_t writev(int, const struct iovec *, int);
+ssize_t sendfile(int, int, int64_t *, size_t);
+int getsockopt(int, int, int, void *, uint32_t *) paramsnonnull((5));
+int setsockopt(int, int, int, const void *, uint32_t);
+int socketpair(int, int, int, int[2]) paramsnonnull();
+int poll(struct pollfd *, uint64_t, int32_t) paramsnonnull();
+int ppoll(struct pollfd *, uint64_t, const struct timespec *,
+          const struct sigset *) paramsnonnull((1, 4));
+ssize_t sendto(int, const void *, size_t, uint32_t, const void *, uint32_t)
+    paramsnonnull((2));
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define DNS_TYPE_A 1
+#define DNS_CLASS_IN 1
+
+#define kMinSockaddr4Size \
+  (offsetof(struct sockaddr_in, sin_addr) + sizeof(struct in_addr))
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/dns/dns.h */
+
+#define COSMOPOLITAN_LIBC_DNS_DNS_H_
+
+
+/*!BEGIN libc/dns/resolvconf.h */
+
+#define COSMOPOLITAN_LIBC_DNS_RESOLVCONF_H_
+
+
+/*!BEGIN libc/stdio/stdio.h */
+
+#define COSMOPOLITAN_LIBC_STDIO_STDIO_H_
+
+#define FILENAME_MAX PATH_MAX
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § standard i/o                                              ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+typedef struct FILE {
+  uint8_t bufmode; /* 0x00 _IOFBF, etc. (ignored if fd=-1) */
+  bool noclose;    /* 0x01 for fake dup() */
+  uint32_t iomode; /* 0x04 O_RDONLY, etc. (ignored if fd=-1) */
+  int32_t state;   /* 0x08 0=OK, -1=EOF, >0=errno */
+  int fd;          /* 0x0c ≥0=fd, -1=closed|buffer */
+  uint32_t beg;    /* 0x10 */
+  uint32_t end;    /* 0x14 */
+  char *buf;       /* 0x18 */
+  uint32_t size;   /* 0x20 */
+  uint32_t nofree; /* 0x24 */
+  int pid;         /* 0x28 */
+} FILE;
+
+extern FILE *stdin;
+extern FILE *stdout;
+extern FILE *stderr;
+
+errno_t ferror(FILE *) paramsnonnull();
+void clearerr(FILE *) paramsnonnull();
+int feof(FILE *) paramsnonnull();
+int getc(FILE *) paramsnonnull();
+int putc(int, FILE *) paramsnonnull();
+int fflush(FILE *);
+int fgetc(FILE *) paramsnonnull();
+int ungetc(int, FILE *) paramsnonnull();
+int fileno(FILE *) paramsnonnull() nosideeffect;
+int fputc(int, FILE *) paramsnonnull();
+int fputs(const char *, FILE *) paramsnonnull();
+int fputws(const wchar_t *, FILE *) paramsnonnull();
+char *fgets(char *, int, FILE *) paramsnonnull();
+wchar_t *fgetws(wchar_t *, int, FILE *) paramsnonnull();
+wint_t putwc(wchar_t, FILE *) paramsnonnull();
+wint_t fputwc(wchar_t, FILE *) paramsnonnull();
+wint_t putwchar(wchar_t);
+wint_t getwchar(void);
+wint_t getwc(FILE *) paramsnonnull();
+wint_t fgetwc(FILE *) paramsnonnull();
+wint_t ungetwc(wint_t, FILE *) paramsnonnull();
+int getchar(void);
+int putchar(int);
+int puts(const char *) paramsnonnull();
+ssize_t getline(char **, size_t *, FILE *) paramsnonnull();
+ssize_t getdelim(char **, size_t *, int, FILE *) paramsnonnull();
+FILE *fopen(const char *, const char *) paramsnonnull() nodiscard;
+FILE *fdopen(int, const char *) paramsnonnull() nodiscard;
+FILE *fmemopen(void *, size_t, const char *) paramsnonnull((3)) nodiscard;
+FILE *freopen(const char *, const char *, FILE *) paramsnonnull((2, 3));
+size_t fread(void *, size_t, size_t, FILE *) paramsnonnull((4));
+size_t fwrite(const void *, size_t, size_t, FILE *) paramsnonnull((4));
+int fclose(FILE *);
+int fclose_s(FILE **) paramsnonnull();
+int fseek(FILE *, long, int) paramsnonnull();
+long ftell(FILE *) paramsnonnull();
+int fseeko(FILE *, int64_t, int) paramsnonnull();
+int64_t ftello(FILE *) paramsnonnull();
+void rewind(FILE *) paramsnonnull();
+int fopenflags(const char *) paramsnonnull();
+void setbuf(FILE *, char *);
+void setbuffer(FILE *, char *, size_t);
+int setvbuf(FILE *, char *, int, size_t);
+FILE *popen(const char *, const char *);
+int pclose(FILE *);
+
+typedef uint64_t fpos_t;
+compatfn char *gets(char *) paramsnonnull();
+compatfn int fgetpos(FILE *, fpos_t *) paramsnonnull();
+compatfn int fsetpos(FILE *, const fpos_t *) paramsnonnull();
+
+int system(const char *);
+int systemexec(const char *);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § standard i/o » formatting                                 ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+int printf(const char *, ...) printfesque(1)
+    paramsnonnull((1)) nothrow nocallback;
+int vprintf(const char *, va_list) paramsnonnull() nothrow nocallback;
+int fprintf(FILE *, const char *, ...) printfesque(2)
+    paramsnonnull((1, 2)) nothrow nocallback;
+int vfprintf(FILE *, const char *, va_list) paramsnonnull() nothrow nocallback;
+int scanf(const char *, ...) scanfesque(1);
+int vscanf(const char *, va_list);
+int fscanf(FILE *, const char *, ...) scanfesque(2);
+int vfscanf(FILE *, const char *, va_list);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § standard i/o » optimizations                              ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define getc(f)     fgetc(f)
+#define getwc(f)    fgetwc(f)
+#define putc(c, f)  fputc(c, f)
+#define putwc(c, f) fputwc(c, f)
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define printf(FMT, ...)     (printf)(PFLINK(FMT), ##__VA_ARGS__)
+#define vprintf(FMT, VA)     (vprintf)(PFLINK(FMT), VA)
+#define fprintf(F, FMT, ...) (fprintf)(F, PFLINK(FMT), ##__VA_ARGS__)
+#define vfprintf(F, FMT, VA) (vfprintf)(F, PFLINK(FMT), VA)
+#define vscanf(FMT, VA)      (vscanf)(SFLINK(FMT), VA)
+#define scanf(FMT, ...)      (scanf)(SFLINK(FMT), ##__VA_ARGS__)
+#define fscanf(F, FMT, ...)  (fscanf)(F, SFLINK(FMT), ##__VA_ARGS__)
+#define vfscanf(F, FMT, VA)  (vfscanf)(F, SFLINK(FMT), VA)
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define stdin  SYMBOLIC(stdin)
+#define stdout SYMBOLIC(stdout)
+#define stderr SYMBOLIC(stderr)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct Nameservers {
+  size_t i, n;
+  struct sockaddr_in *p;
+};
+
+struct ResolvConf {
+  struct Nameservers nameservers;
+};
+
+const struct ResolvConf *getresolvconf(void) returnsnonnull;
+int parseresolvconf(struct ResolvConf *, struct FILE *) paramsnonnull();
+void freeresolvconf(struct ResolvConf **) paramsnonnull();
+int getntnameservers(struct ResolvConf *) paramsnonnull();
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define DNS_PORT      53
+#define DNS_NAME_MAX  253
+#define DNS_LABEL_MAX 63
+
+#define EAI_SUCCESS     0
+#define EAI_BADFLAGS    -1
+#define EAI_NONAME      -2
+#define EAI_AGAIN       -3
+#define EAI_FAIL        -4
+#define EAI_NODATA      -5
+#define EAI_FAMILY      -6
+#define EAI_SOCKTYPE    -7
+#define EAI_SERVICE     -8
+#define EAI_ADDRFAMILY  -9
+#define EAI_MEMORY      -10
+#define EAI_OVERFLOW    -12
+#define EAI_SYSTEM      -11
+#define EAI_ALLDONE     -103
+#define EAI_CANCELED    -101
+#define EAI_IDN_ENCODE  -105
+#define EAI_INPROGRESS  -100
+#define EAI_INTR        -104
+#define EAI_NOTCANCELED -102
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct addrinfo {
+  int32_t ai_flags;    /* AI_XXX */
+  int32_t ai_family;   /* AF_INET */
+  int32_t ai_socktype; /* SOCK_XXX */
+  int32_t ai_protocol; /* IPPROTO_XXX */
+  uint32_t ai_addrlen;
+  union {
+    struct sockaddr *ai_addr;
+    struct sockaddr_in *ai_addr4;
+  };
+  char *ai_canonname /*[DNS_NAME_MAX + 1]*/;
+  struct addrinfo *ai_next;
+};
+
+int getaddrinfo(const char *, const char *, const struct addrinfo *,
+                struct addrinfo **) paramsnonnull((4));
+int freeaddrinfo(struct addrinfo *);
+const char *gai_strerror(int);
+int dnsnamecmp(const char *, const char *) paramsnonnull();
+int pascalifydnsname(uint8_t *, size_t, const char *) paramsnonnull();
+int resolvedns(const struct ResolvConf *, int, const char *, struct sockaddr *,
+               uint32_t) paramsnonnull();
+struct addrinfo *newaddrinfo(uint16_t);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/dns/dnsheader.h */
+
+#define COSMOPOLITAN_LIBC_DNS_DNSHEADER_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct DnsHeader {
+  uint16_t id;      /* transaction id */
+  uint8_t bf1;      /* bit field 1 */
+  uint8_t bf2;      /* bit field 2 */
+  uint16_t qdcount; /* question count */
+  uint16_t ancount; /* answer count */
+  uint16_t nscount; /* nameserver count */
+  uint16_t arcount; /* additional record count */
+};
+
+int serializednsheader(uint8_t *, size_t, const struct DnsHeader);
+int deserializednsheader(struct DnsHeader *, const uint8_t *, size_t);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/dns/dnsquestion.h */
+
+#define COSMOPOLITAN_LIBC_DNS_DNSQUESTION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct DnsQuestion {
+  const char *qname;
+  uint16_t qtype;
+  uint16_t qclass;
+};
+
+int serializednsquestion(uint8_t *, size_t, struct DnsQuestion);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/dns/hoststxt.h */
+
+#define COSMOPOLITAN_LIBC_DNS_HOSTSTXT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct FILE;
+struct sockaddr;
+
+struct HostsTxtEntry {
+  unsigned char ip[4]; /* inet_ntop(AF_INET, he->ip, buf, size) */
+  uint32_t name;       /* &ht->strings.p[he->name] */
+  uint32_t canon;      /* &ht->strings.p[he->canon] */
+};
+
+struct HostsTxtEntries {
+  size_t i;
+  size_t n;
+  struct HostsTxtEntry *p;
+};
+
+struct HostsTxtStrings {
+  size_t i;
+  size_t n;
+  char *p;
+};
+
+struct HostsTxt {
+  struct HostsTxtEntries entries;
+  struct HostsTxtStrings strings;
+};
+
+const struct HostsTxt *gethoststxt(void) returnsnonnull;
+void freehoststxt(struct HostsTxt **) paramsnonnull();
+int parsehoststxt(struct HostsTxt *, struct FILE *) paramsnonnull();
+void sorthoststxt(struct HostsTxt *) paramsnonnull();
+int resolvehoststxt(const struct HostsTxt *, int, const char *,
+                    struct sockaddr *, uint32_t, const char **)
+    paramsnonnull((1, 3));
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/def.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_DEF_H_
+
+/**
+ * @fileoverview Executable and Linkable Format Definitions.
+ */
+
+#define EI_MAG0 0
+#define EI_MAG1 1
+#define EI_MAG2 2
+#define EI_MAG3 3
+
+#define ELFMAG  "\177ELF"
+#define ELFMAG0 0x7f
+#define ELFMAG1 'E'
+#define ELFMAG2 'L'
+#define ELFMAG3 'F'
+#define SELFMAG 4
+
+#define EI_CLASS     4
+#define ELFCLASSNONE 0
+#define ELFCLASS32   1
+#define ELFCLASS64   2
+#define ELFCLASSNUM  3
+
+#define EI_DATA     5
+#define ELFDATANONE 0
+#define ELFDATA2LSB 1
+#define ELFDATA2MSB 2
+#define ELFDATANUM  3
+
+#define EI_VERSION 6
+
+#define EI_OSABI            7
+#define ELFOSABI_NONE       0
+#define ELFOSABI_SYSV       0
+#define ELFOSABI_HPUX       1
+#define ELFOSABI_NETBSD     2
+#define ELFOSABI_LINUX      3
+#define ELFOSABI_GNU        3
+#define ELFOSABI_SOLARIS    6
+#define ELFOSABI_AIX        7
+#define ELFOSABI_IRIX       8
+#define ELFOSABI_FREEBSD    9
+#define ELFOSABI_TRU64      10
+#define ELFOSABI_MODESTO    11
+#define ELFOSABI_OPENBSD    12
+#define ELFOSABI_ARM        97
+#define ELFOSABI_STANDALONE 255
+
+#define EI_ABIVERSION 8
+
+#define EI_PAD 9
+
+#define ET_NONE   0
+#define ET_REL    1
+#define ET_EXEC   2
+#define ET_DYN    3
+#define ET_CORE   4
+#define ET_NUM    5
+#define ET_LOOS   0xfe00
+#define ET_HIOS   0xfeff
+#define ET_LOPROC 0xff00
+#define ET_HIPROC 0xffff
+
+#define EM_NONE      0
+#define EM_M32       1
+#define EM_386       3
+#define EM_S390      22
+#define EM_ARM       40
+#define EM_NEXGEN32E 62
+#define EM_X86_64    EM_NEXGEN32E
+#define EM_IA32E     EM_NEXGEN32E
+#define EM_AMD64     EM_NEXGEN32E
+#define EM_PDP11     65
+#define EM_CRAYNV2   172
+#define EM_L10M      180
+#define EM_K10M      181
+#define EM_AARCH64   183
+#define EM_CUDA      190
+#define EM_Z80       220
+#define EM_RISCV     243
+#define EM_BPF       247
+
+#define GRP_COMDAT 0x1
+#define STN_UNDEF  0
+
+#define EV_NONE    0
+#define EV_CURRENT 1
+#define EV_NUM     2
+
+#define SYMINFO_NONE          0
+#define SYMINFO_CURRENT       1
+#define SYMINFO_NUM           2
+#define SYMINFO_BT_SELF       0xffff
+#define SYMINFO_BT_PARENT     0xfffe
+#define SYMINFO_BT_LOWRESERVE 0xff00
+#define SYMINFO_FLG_DIRECT    0x0001
+#define SYMINFO_FLG_PASSTHRU  0x0002
+#define SYMINFO_FLG_COPY      0x0004
+#define SYMINFO_FLG_LAZYLOAD  0x0008
+
+#define PT_NULL         0
+#define PT_LOAD         1
+#define PT_DYNAMIC      2
+#define PT_INTERP       3
+#define PT_NOTE         4
+#define PT_SHLIB        5
+#define PT_PHDR         6
+#define PT_TLS          7
+#define PT_NUM          8
+#define PT_LOOS         0x60000000
+#define PT_GNU_EH_FRAME 0x6474e550
+#define PT_GNU_STACK    0x6474e551
+#define PT_GNU_RELRO    0x6474e552
+#define PT_LOSUNW       0x6ffffffa
+#define PT_SUNWBSS      0x6ffffffa
+#define PT_SUNWSTACK    0x6ffffffb
+#define PT_HISUNW       0x6fffffff
+#define PT_HIOS         0x6fffffff
+#define PT_LOPROC       0x70000000
+#define PT_HIPROC       0x7fffffff
+
+#define PN_XNUM 0xffff
+
+#define PF_X        (1 << 0)
+#define PF_W        (1 << 1)
+#define PF_R        (1 << 2)
+#define PF_MASKOS   0x0ff00000
+#define PF_MASKPROC 0xf0000000
+
+#define R_X86_64_NONE            0
+#define R_X86_64_64              1
+#define R_X86_64_PC32            2
+#define R_X86_64_GOT32           3
+#define R_X86_64_PLT32           4
+#define R_X86_64_COPY            5
+#define R_X86_64_GLOB_DAT        6
+#define R_X86_64_JUMP_SLOT       7
+#define R_X86_64_RELATIVE        8
+#define R_X86_64_GOTPCREL        9
+#define R_X86_64_32              10
+#define R_X86_64_32S             11
+#define R_X86_64_16              12
+#define R_X86_64_PC16            13
+#define R_X86_64_8               14
+#define R_X86_64_PC8             15
+#define R_X86_64_DTPMOD64        16
+#define R_X86_64_DTPOFF64        17
+#define R_X86_64_TPOFF64         18
+#define R_X86_64_TLSGD           19
+#define R_X86_64_TLSLD           20
+#define R_X86_64_DTPOFF32        21
+#define R_X86_64_GOTTPOFF        22
+#define R_X86_64_TPOFF32         23
+#define R_X86_64_PC64            24
+#define R_X86_64_GOTOFF64        25
+#define R_X86_64_GOTPC32         26
+#define R_X86_64_GOT64           27
+#define R_X86_64_GOTPCREL64      28
+#define R_X86_64_GOTPC64         29
+#define R_X86_64_GOTPLT64        30
+#define R_X86_64_PLTOFF64        31
+#define R_X86_64_SIZE32          32
+#define R_X86_64_SIZE64          33
+#define R_X86_64_GOTPC32_TLSDESC 34
+#define R_X86_64_TLSDESC_CALL    35
+#define R_X86_64_TLSDESC         36
+#define R_X86_64_IRELATIVE       37
+#define R_X86_64_RELATIVE64      38
+#define R_X86_64_GOTPCRELX       41 /* 6 bytes */
+#define R_X86_64_REX_GOTPCRELX   42 /* 7 bytes */
+#define R_X86_64_NUM             43
+
+#define STB_LOCAL      0
+#define STB_GLOBAL     1
+#define STB_WEAK       2
+#define STB_NUM        3
+#define STB_LOOS       10
+#define STB_GNU_UNIQUE 10
+#define STB_HIOS       12
+#define STB_LOPROC     13
+#define STB_HIPROC     15
+
+#define STT_NOTYPE    0
+#define STT_OBJECT    1
+#define STT_FUNC      2
+#define STT_SECTION   3
+#define STT_FILE      4
+#define STT_COMMON    5
+#define STT_TLS       6
+#define STT_NUM       7
+#define STT_LOOS      10
+#define STT_GNU_IFUNC 10
+#define STT_HIOS      12
+#define STT_LOPROC    13
+#define STT_HIPROC    15
+
+#define STV_DEFAULT   0
+#define STV_INTERNAL  1
+#define STV_HIDDEN    2
+#define STV_PROTECTED 3
+
+#define SHN_UNDEF     0
+#define SHN_LORESERVE 0xff00
+#define SHN_LOPROC    0xff00
+#define SHN_BEFORE    0xff00
+#define SHN_AFTER     0xff01
+#define SHN_HIPROC    0xff1f
+#define SHN_LOOS      0xff20
+#define SHN_HIOS      0xff3f
+#define SHN_ABS       0xfff1
+#define SHN_COMMON    0xfff2
+#define SHN_XINDEX    0xffff
+#define SHN_HIRESERVE 0xffff
+
+#define SHF_WRITE            (1 << 0)
+#define SHF_ALLOC            (1 << 1)
+#define SHF_EXECINSTR        (1 << 2)
+#define SHF_MERGE            (1 << 4)
+#define SHF_STRINGS          (1 << 5)
+#define SHF_INFO_LINK        (1 << 6)
+#define SHF_LINK_ORDER       (1 << 7)
+#define SHF_OS_NONCONFORMING (1 << 8)
+#define SHF_GROUP            (1 << 9)
+#define SHF_TLS              (1 << 10)
+#define SHF_COMPRESSED       (1 << 11)
+#define SHF_MASKOS           0x0ff00000
+#define SHF_MASKPROC         0xf0000000
+#define SHF_ORDERED          (1 << 30)
+#define SHF_EXCLUDE          (1U << 31)
+
+#define ELFCOMPRESS_ZLIB   1
+#define ELFCOMPRESS_LOOS   0x60000000
+#define ELFCOMPRESS_HIOS   0x6fffffff
+#define ELFCOMPRESS_LOPROC 0x70000000
+#define ELFCOMPRESS_HIPROC 0x7fffffff
+
+#define SHT_NULL           0
+#define SHT_PROGBITS       1
+#define SHT_SYMTAB         2
+#define SHT_STRTAB         3
+#define SHT_RELA           4
+#define SHT_HASH           5
+#define SHT_DYNAMIC        6
+#define SHT_NOTE           7
+#define SHT_NOBITS         8
+#define SHT_REL            9
+#define SHT_SHLIB          10
+#define SHT_DYNSYM         11
+#define SHT_INIT_ARRAY     14
+#define SHT_FINI_ARRAY     15
+#define SHT_PREINIT_ARRAY  16
+#define SHT_GROUP          17
+#define SHT_SYMTAB_SHNDX   18
+#define SHT_NUM            19
+#define SHT_LOOS           0x60000000
+#define SHT_GNU_ATTRIBUTES 0x6ffffff5
+#define SHT_GNU_HASH       0x6ffffff6
+#define SHT_GNU_LIBLIST    0x6ffffff7
+#define SHT_CHECKSUM       0x6ffffff8
+#define SHT_LOSUNW         0x6ffffffa
+#define SHT_SUNW_move      0x6ffffffa
+#define SHT_SUNW_COMDAT    0x6ffffffb
+#define SHT_SUNW_syminfo   0x6ffffffc
+#define SHT_GNU_verdef     0x6ffffffd
+#define SHT_GNU_verneed    0x6ffffffe
+#define SHT_GNU_versym     0x6fffffff
+#define SHT_HISUNW         0x6fffffff
+#define SHT_HIOS           0x6fffffff
+#define SHT_LOPROC         0x70000000
+#define SHT_HIPROC         0x7fffffff
+#define SHT_LOUSER         0x80000000
+#define SHT_HIUSER         0x8fffffff
+
+#define DT_NULL               0
+#define DT_NEEDED             1
+#define DT_PLTRELSZ           2
+#define DT_PLTGOT             3
+#define DT_HASH               4
+#define DT_STRTAB             5
+#define DT_SYMTAB             6
+#define DT_RELA               7
+#define DT_RELASZ             8
+#define DT_RELAENT            9
+#define DT_STRSZ              10
+#define DT_SYMENT             11
+#define DT_INIT               12
+#define DT_FINI               13
+#define DT_SONAME             14
+#define DT_RPATH              15
+#define DT_SYMBOLIC           16
+#define DT_REL                17
+#define DT_RELSZ              18
+#define DT_RELENT             19
+#define DT_PLTREL             20
+#define DT_DEBUG              21
+#define DT_TEXTREL            22
+#define DT_JMPREL             23
+#define DT_BIND_NOW           24
+#define DT_INIT_ARRAY         25
+#define DT_FINI_ARRAY         26
+#define DT_INIT_ARRAYSZ       27
+#define DT_FINI_ARRAYSZ       28
+#define DT_RUNPATH            29
+#define DT_FLAGS              30
+#define DT_ENCODING           32
+#define DT_PREINIT_ARRAY      32
+#define DT_PREINIT_ARRAYSZ    33
+#define DT_SYMTAB_SHNDX       34
+#define DT_NUM                35
+#define DT_LOOS               0x6000000d
+#define DT_HIOS               0x6ffff000
+#define DT_LOPROC             0x70000000
+#define DT_HIPROC             0x7fffffff
+#define DT_VALRNGLO           0x6ffffd00
+#define DT_GNU_PRELINKED      0x6ffffdf5
+#define DT_GNU_CONFLICTSZ     0x6ffffdf6
+#define DT_GNU_LIBLISTSZ      0x6ffffdf7
+#define DT_CHECKSUM           0x6ffffdf8
+#define DT_PLTPADSZ           0x6ffffdf9
+#define DT_MOVEENT            0x6ffffdfa
+#define DT_MOVESZ             0x6ffffdfb
+#define DT_FEATURE_1          0x6ffffdfc
+#define DT_POSFLAG_1          0x6ffffdfd
+#define DT_SYMINSZ            0x6ffffdfe
+#define DT_SYMINENT           0x6ffffdff
+#define DT_VALRNGHI           0x6ffffdff
+#define DT_VALTAGIDX(tag)     (DT_VALRNGHI - (tag))
+#define DT_VALNUM             12
+#define DT_ADDRRNGLO          0x6ffffe00
+#define DT_GNU_HASH           0x6ffffef5
+#define DT_TLSDESC_PLT        0x6ffffef6
+#define DT_TLSDESC_GOT        0x6ffffef7
+#define DT_GNU_CONFLICT       0x6ffffef8
+#define DT_GNU_LIBLIST        0x6ffffef9
+#define DT_CONFIG             0x6ffffefa
+#define DT_DEPAUDIT           0x6ffffefb
+#define DT_AUDIT              0x6ffffefc
+#define DT_PLTPAD             0x6ffffefd
+#define DT_MOVETAB            0x6ffffefe
+#define DT_SYMINFO            0x6ffffeff
+#define DT_ADDRRNGHI          0x6ffffeff
+#define DT_ADDRTAGIDX(tag)    (DT_ADDRRNGHI - (tag))
+#define DT_ADDRNUM            11
+#define DT_VERSYM             0x6ffffff0
+#define DT_RELACOUNT          0x6ffffff9
+#define DT_RELCOUNT           0x6ffffffa
+#define DT_FLAGS_1            0x6ffffffb
+#define DT_VERDEF             0x6ffffffc
+#define DT_VERDEFNUM          0x6ffffffd
+#define DT_VERNEED            0x6ffffffe
+#define DT_VERNEEDNUM         0x6fffffff
+#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag))
+#define DT_VERSIONTAGNUM      16
+#define DT_AUXILIARY          0x7ffffffd
+#define DT_FILTER             0x7fffffff
+#define DT_EXTRATAGIDX(tag)   ((Elf32_Word) - ((Elf32_Sword)(tag) << 1 >> 1) - 1)
+#define DT_EXTRANUM           3
+
+#define VER_NEED_NONE    0
+#define VER_NEED_CURRENT 1
+#define VER_NEED_NUM     2
+#define VER_FLG_WEAK     0x2
+
+#define ELF_NOTE_SOLARIS       "SUNW Solaris"
+#define ELF_NOTE_GNU           "GNU"
+#define ELF_NOTE_PAGESIZE_HINT 1
+#define ELF_NOTE_ABI           NT_GNU_ABI_TAG
+#define ELF_NOTE_OS_LINUX      0
+#define ELF_NOTE_OS_GNU        1
+#define ELF_NOTE_OS_SOLARIS2   2
+#define ELF_NOTE_OS_FREEBSD    3
+
+#define NT_GNU_ABI_TAG      1
+#define NT_GNU_BUILD_ID     3
+#define NT_GNU_GOLD_VERSION 4
+
+#define EF_CPU32 0x00810000
+
+#define DF_ORIGIN       0x00000001
+#define DF_SYMBOLIC     0x00000002
+#define DF_TEXTREL      0x00000004
+#define DF_BIND_NOW     0x00000008
+#define DF_STATIC_TLS   0x00000010
+#define DF_1_NOW        0x00000001
+#define DF_1_GLOBAL     0x00000002
+#define DF_1_GROUP      0x00000004
+#define DF_1_NODELETE   0x00000008
+#define DF_1_LOADFLTR   0x00000010
+#define DF_1_INITFIRST  0x00000020
+#define DF_1_NOOPEN     0x00000040
+#define DF_1_ORIGIN     0x00000080
+#define DF_1_DIRECT     0x00000100
+#define DF_1_TRANS      0x00000200
+#define DF_1_INTERPOSE  0x00000400
+#define DF_1_NODEFLIB   0x00000800
+#define DF_1_NODUMP     0x00001000
+#define DF_1_CONFALT    0x00002000
+#define DF_1_ENDFILTEE  0x00004000
+#define DF_1_DISPRELDNE 0x00008000
+#define DF_1_DISPRELPND 0x00010000
+#define DF_1_NODIRECT   0x00020000
+#define DF_1_IGNMULDEF  0x00040000
+#define DF_1_NOKSYMS    0x00080000
+#define DF_1_NOHDR      0x00100000
+#define DF_1_EDITED     0x00200000
+#define DF_1_NORELOC    0x00400000
+#define DF_1_SYMINTPOSE 0x00800000
+#define DF_1_GLOBAUDIT  0x01000000
+#define DF_1_SINGLETON  0x02000000
+#define DF_1_STUB       0x04000000
+#define DF_1_PIE        0x08000000
+#define DTF_1_PARINIT   0x00000001
+#define DTF_1_CONFEXP   0x00000002
+#define DF_P1_LAZYLOAD  0x00000001
+#define DF_P1_GROUPPERM 0x00000002
+
+#define ELF64_ST_BIND(val)        (((unsigned char)(val)) >> 4)
+#define ELF64_ST_TYPE(val)        ((val)&0xf)
+#define ELF64_ST_INFO(bind, type) (((bind) << 4) + ((type)&0xf))
+#define ELF64_ST_VISIBILITY(o)    ((o)&0x03)
+
+#define ELF64_R_SYM(i)          ((i) >> 32)
+#define ELF64_R_TYPE(i)         ((i)&0xffffffff)
+#define ELF64_R_INFO(sym, type) ((((Elf64_Xword)(sym)) << 32) + (type))
+
+#define ELF64_M_SYM(info)       ((info) >> 8)
+#define ELF64_M_SIZE(info)      ((unsigned char)(info))
+#define ELF64_M_INFO(sym, size) (((sym) << 8) + (unsigned char)(size))
+
+#define NT_PRSTATUS         1
+#define NT_PRFPREG          2
+#define NT_FPREGSET         2
+#define NT_PRPSINFO         3
+#define NT_PRXREG           4
+#define NT_TASKSTRUCT       4
+#define NT_PLATFORM         5
+#define NT_AUXV             6
+#define NT_GWINDOWS         7
+#define NT_ASRS             8
+#define NT_PSTATUS          10
+#define NT_PSINFO           13
+#define NT_PRCRED           14
+#define NT_UTSNAME          15
+#define NT_LWPSTATUS        16
+#define NT_LWPSINFO         17
+#define NT_PRFPXREG         20
+#define NT_SIGINFO          0x53494749
+#define NT_FILE             0x46494c45
+#define NT_PRXFPREG         0x46e62b7f
+#define NT_PPC_VMX          0x100
+#define NT_PPC_SPE          0x101
+#define NT_PPC_VSX          0x102
+#define NT_PPC_TAR          0x103
+#define NT_PPC_PPR          0x104
+#define NT_PPC_DSCR         0x105
+#define NT_PPC_EBB          0x106
+#define NT_PPC_PMU          0x107
+#define NT_PPC_TM_CGPR      0x108
+#define NT_PPC_TM_CFPR      0x109
+#define NT_PPC_TM_CVMX      0x10a
+#define NT_PPC_TM_CVSX      0x10b
+#define NT_PPC_TM_SPR       0x10c
+#define NT_PPC_TM_CTAR      0x10d
+#define NT_PPC_TM_CPPR      0x10e
+#define NT_PPC_TM_CDSCR     0x10f
+#define NT_X86_XSTATE       0x202
+#define NT_S390_HIGH_GPRS   0x300
+#define NT_S390_TIMER       0x301
+#define NT_S390_TODCMP      0x302
+#define NT_S390_TODPREG     0x303
+#define NT_S390_CTRS        0x304
+#define NT_S390_PREFIX      0x305
+#define NT_S390_LAST_BREAK  0x306
+#define NT_S390_SYSTEM_CALL 0x307
+#define NT_S390_TDB         0x308
+#define NT_S390_VXRS_LOW    0x309
+#define NT_S390_VXRS_HIGH   0x30a
+#define NT_S390_GS_CB       0x30b
+#define NT_S390_GS_BC       0x30c
+#define NT_S390_RI_CB       0x30d
+#define NT_ARM_VFP          0x400
+#define NT_ARM_TLS          0x401
+#define NT_ARM_HW_BREAK     0x402
+#define NT_ARM_HW_WATCH     0x403
+#define NT_ARM_SYSTEM_CALL  0x404
+#define NT_ARM_SVE          0x405
+#define NT_ARM_PAC_MASK     0x406
+#define NT_METAG_CBUF       0x500
+#define NT_METAG_RPIPE      0x501
+#define NT_METAG_TLS        0x502
+#define NT_ARC_V2           0x600
+#define NT_VMCOREDD         0x700
+#define NT_VERSION          1
+
+#define VER_DEF_NONE      0
+#define VER_DEF_CURRENT   1
+#define VER_DEF_NUM       2
+#define VER_FLG_BASE      0x1
+#define VER_FLG_WEAK      0x2
+#define VER_NDX_LOCAL     0
+#define VER_NDX_GLOBAL    1
+#define VER_NDX_LORESERVE 0xff00
+#define VER_NDX_ELIMINATE 0xff01
+
+#define LL_NONE           0
+#define LL_EXACT_MATCH    (1 << 0)
+#define LL_IGNORE_INT_VER (1 << 1)
+#define LL_REQUIRE_MINOR  (1 << 2)
+#define LL_EXPORTS        (1 << 3)
+#define LL_DELAY_LOAD     (1 << 4)
+#define LL_DELTA          (1 << 5)
+
+#define R_BPF_NONE   0
+#define R_BPF_MAP_FD 1
+
+
+
+/*!BEGIN libc/elf/elf.h */
+
+#define COSMOPOLITAN_LIBC_ELF_H_
+
+
+/*!BEGIN libc/elf/struct/ehdr.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_EHDR_H_
+
+
+/*!BEGIN libc/elf/scalar.h */
+
+#define COSMOPOLITAN_LIBC_ELF_SCALAR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define Elf64_Half uint16_t
+#define Elf64_Word uint32_t
+#define Elf64_Sword int32_t
+#define Elf64_Xword uint64_t
+#define Elf64_Sxword int64_t
+#define Elf64_Addr uint64_t
+#define Elf64_Off uint64_t
+#define Elf64_Section uint16_t
+#define Elf64_Versym Elf64_Half
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define EI_NIDENT 16
+
+typedef struct Elf64_Ehdr {
+  unsigned char e_ident[EI_NIDENT];
+  Elf64_Half e_type;
+  Elf64_Half e_machine;
+  Elf64_Word e_version;
+  Elf64_Addr e_entry;
+  Elf64_Off e_phoff;
+  Elf64_Off e_shoff;
+  Elf64_Word e_flags;
+  Elf64_Half e_ehsize;
+  Elf64_Half e_phentsize;
+  Elf64_Half e_phnum;
+  Elf64_Half e_shentsize;
+  Elf64_Half e_shnum;
+  Elf64_Half e_shstrndx;
+} Elf64_Ehdr;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/phdr.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_PHDR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_Phdr {
+  Elf64_Word p_type;
+  Elf64_Word p_flags;
+  Elf64_Off p_offset;
+  Elf64_Addr p_vaddr;
+  Elf64_Addr p_paddr;
+  Elf64_Xword p_filesz;
+  Elf64_Xword p_memsz;
+  Elf64_Xword p_align;
+} Elf64_Phdr;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/shdr.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_SHDR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+/**
+ * Section header.
+ * @see https://docs.oracle.com/cd/E19683-01/816-1386/chapter6-94076/index.html
+ */
+typedef struct Elf64_Shdr {
+  Elf64_Word sh_name;
+  Elf64_Word sh_type;   /* SHT_{PROGBITS,NOBITS,STRTAB,SYMTAB,RELA,...} */
+  Elf64_Xword sh_flags; /* SHF_{WRITE,ALLOC,EXECINSTR,MERGE,STRINGS,...} */
+  Elf64_Addr sh_addr;
+  Elf64_Off sh_offset;
+  Elf64_Xword sh_size;
+  /*
+   * If SHT_RELA: Index of section of associated symbol table.
+   * If SHT_SYMTAB: Index of section of associated string table.
+   */
+  Elf64_Word sh_link;
+  /*
+   * If SHT_RELA: Index of section to which relocations apply.
+   * If SHT_SYMTAB: One greater than symbol table index of last local symbol.
+   */
+  Elf64_Word sh_info;
+  Elf64_Xword sh_addralign;
+  Elf64_Xword sh_entsize;
+} Elf64_Shdr;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/sym.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_SYM_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_Sym {
+  Elf64_Word st_name;
+  /* ELF64_ST_TYPE(st_info) → STT_{NOTYPE,OBJECT,FUNC,SECTION,FILE,COMMON,...}
+   * ELF64_ST_BIND(st_info) → STB_{LOCAL,GLOBAL,WEAK,...} */
+  uint8_t st_info;
+  /* STV_{DEFAULT,INTERNAL,HIDDEN,PROTECTED} */
+  uint8_t st_other;
+  /* SHN_UNDEF, <section index>, SHN_ABS, SHN_COMMON, etc. */
+  Elf64_Section st_shndx;
+  Elf64_Addr st_value;
+  Elf64_Xword st_size;
+} Elf64_Sym;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § executable & linkable format                              ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+char *GetElfStringTable(const Elf64_Ehdr *, size_t);
+Elf64_Sym *GetElfSymbolTable(const Elf64_Ehdr *, size_t, Elf64_Xword *);
+bool IsElf64Binary(const Elf64_Ehdr *, size_t);
+void CheckElfAddress(const Elf64_Ehdr *, size_t, intptr_t, size_t);
+bool IsElfSymbolContent(const Elf64_Sym *);
+Elf64_Phdr *GetElfSegmentHeaderAddress(const Elf64_Ehdr *, size_t, unsigned);
+Elf64_Shdr *GetElfSectionHeaderAddress(const Elf64_Ehdr *, size_t, Elf64_Half);
+void *GetElfSectionAddress(const Elf64_Ehdr *, size_t, const Elf64_Shdr *);
+char *GetElfSectionNameStringTable(const Elf64_Ehdr *, size_t);
+void GetElfVirtualAddressRange(const Elf64_Ehdr *, size_t, intptr_t *,
+                               intptr_t *);
+char *GetElfString(const Elf64_Ehdr *, size_t, const char *, Elf64_Word);
+const char *GetElfSectionName(const Elf64_Ehdr *, size_t, Elf64_Shdr *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/auxv.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_AUXV_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_auxv_t {
+  uint64_t a_type;
+  union {
+    uint64_t a_val;
+  } a_un;
+} Elf64_auxv_t;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/chdr.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_CHDR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_Chdr {
+  Elf64_Word ch_type;
+  Elf64_Word ch_reserved;
+  Elf64_Xword ch_size;
+  Elf64_Xword ch_addralign;
+} Elf64_Chdr;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/dyn.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_DYN_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_Dyn {
+  Elf64_Sxword d_tag;
+  union {
+    Elf64_Xword d_val;
+    Elf64_Addr d_ptr;
+  } d_un;
+} Elf64_Dyn;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/lib.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_LIB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_Lib {
+  Elf64_Word l_name;
+  Elf64_Word l_time_stamp;
+  Elf64_Word l_checksum;
+  Elf64_Word l_version;
+  Elf64_Word l_flags;
+} Elf64_Lib;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/move.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_MOVE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_Move {
+  Elf64_Xword m_value;
+  Elf64_Xword m_info;
+  Elf64_Xword m_poffset;
+  Elf64_Half m_repeat;
+  Elf64_Half m_stride;
+} Elf64_Move;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/nhdr.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_NHDR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_Nhdr {
+  Elf64_Word n_namesz;
+  Elf64_Word n_descsz;
+  Elf64_Word n_type;
+} Elf64_Nhdr;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/rel.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_REL_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_Rel {
+  Elf64_Addr r_offset;
+  Elf64_Xword r_info; /** @see ELF64_R_{SYM,SIZE,INFO} */
+} Elf64_Rel;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/rela.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_RELA_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_Rela {
+  /*u64*/ Elf64_Addr r_offset;
+  /*
+   * ELF64_R_SYM(r_info) → sym
+   * ELF64_R_TYPE(r_info) → R_X86_64_{64,PC32,GOTPCRELX,...}
+   * ELF64_R_INFO(sym, type) → r_info
+   */
+  /*u64*/ Elf64_Xword r_info; /* ELF64_R_{SYM,SIZE,INFO} */
+  /*i64*/ Elf64_Sxword r_addend;
+} Elf64_Rela;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/syminfo.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_SYMINFO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_Syminfo {
+  Elf64_Half si_boundto;
+  Elf64_Half si_flags;
+} Elf64_Syminfo;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/verdaux.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_VERDAUX_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_Verdaux {
+  Elf64_Word vda_name;
+  Elf64_Word vda_next;
+} Elf64_Verdaux;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/verdef.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_VERDEF_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_Verdef {
+  Elf64_Half vd_version;
+  Elf64_Half vd_flags;
+  Elf64_Half vd_ndx;
+  Elf64_Half vd_cnt;
+  Elf64_Word vd_hash;
+  Elf64_Word vd_aux;
+  Elf64_Word vd_next;
+} Elf64_Verdef;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/vernaux.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_VERNAUX_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_Vernaux {
+  Elf64_Word vna_hash;
+  Elf64_Half vna_flags;
+  Elf64_Half vna_other;
+  Elf64_Word vna_name;
+  Elf64_Word vna_next;
+} Elf64_Vernaux;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/elf/struct/verneed.h */
+
+#define COSMOPOLITAN_LIBC_ELF_STRUCT_VERNEED_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef struct Elf64_Verneed {
+  Elf64_Half vn_version;
+  Elf64_Half vn_cnt;
+  Elf64_Word vn_file;
+  Elf64_Word vn_aux;
+  Elf64_Word vn_next;
+} Elf64_Verneed;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/fmt/conv.h */
+
+#define COSMOPOLITAN_LIBC_FMT_CONV_H_
+
+
+/*!BEGIN libc/nt/struct/filetime.h */
+
+#define COSMOPOLITAN_LIBC_NT_FILETIME_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileTime {
+  uint32_t dwLowDateTime;
+  uint32_t dwHighDateTime;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § conversion                                                ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define MODERNITYSECONDS 11644473600ull
+#define HECTONANOSECONDS 10000000ull
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int abs(int) libcesque pureconst;
+long labs(long) libcesque pureconst;
+long long llabs(long long) libcesque pureconst;
+int llog10(unsigned long) libcesque pureconst;
+int atoi(const char *) paramsnonnull() libcesque;
+long atol(const char *) paramsnonnull() libcesque;
+long long atoll(const char *) paramsnonnull() libcesque;
+unsigned long strtoul(const char *, char **, int) paramsnonnull((1));
+long long strtoll(const char *, char **, int) paramsnonnull((1));
+unsigned long long strtoull(const char *, char **, int) paramsnonnull((1));
+long long strtonum(const char *, long long, long long, const char **);
+intmax_t div10(intmax_t, unsigned *) hidden;
+intmax_t strtoimax(const char *, char **, int) paramsnonnull((1));
+uintmax_t strtoumax(const char *, char **, int) paramsnonnull((1));
+intmax_t wcstoimax(const wchar_t *, wchar_t **, int);
+long wcstol(const wchar_t *, wchar_t **, int);
+long strtol(const char *, char **, int) paramsnonnull((1)) libcesque;
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § conversion » time                                         ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+int64_t DosDateTimeToUnix(unsigned, unsigned);
+struct timespec FileTimeToTimeSpec(struct NtFileTime);
+struct NtFileTime TimeSpecToFileTime(struct timespec);
+struct NtFileTime TimeToFileTime(int64_t) nothrow pureconst;
+int64_t filetimetotime(struct NtFileTime) nothrow pureconst;
+void FileTimeToTimeVal(struct timeval *, struct NtFileTime) nothrow;
+struct NtFileTime TimeValToFileTime(const struct timeval *) nosideeffect;
+long convertmicros(const struct timeval *, long) paramsnonnull() nosideeffect;
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § conversion » manipulation                                 ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+char *dirname(char *);
+char *basename(const char *) nosideeffect;
+char *basename_n(const char *, size_t) nosideeffect;
+bool isabspath(const char *) paramsnonnull() nosideeffect;
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § conversion » computation                                  ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+typedef struct {
+  int quot;
+  int rem;
+} div_t;
+
+typedef struct {
+  long int quot;
+  long int rem;
+} ldiv_t;
+
+typedef struct {
+  long long int quot;
+  long long int rem;
+} lldiv_t;
+
+typedef struct {
+  intmax_t quot;
+  intmax_t rem;
+} imaxdiv_t;
+
+div_t div(int, int) pureconst;
+ldiv_t ldiv(long, long) pureconst;
+lldiv_t lldiv(long long, long long) pureconst;
+imaxdiv_t imaxdiv(intmax_t, intmax_t) pureconst;
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § conversion » optimizations                                ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#if __STDC_VERSION__ + 0 >= 199901L
+#define div(num, den)   ((div_t){(num) / (den), (num) % (den)})
+#define ldiv(num, den)  ((ldiv_t){(num) / (den), (num) % (den)})
+#define lldiv(num, den) ((lldiv_t){(num) / (den), (num) % (den)})
+#endif
+
+#ifndef __STRICT_ANSI__
+intmax_t __imaxabs(intmax_t) libcesque pureconst;
+#define imaxabs(x) __imaxabs(x)
+#endif /* !ANSI */
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/fmt/fmt.h */
+
+#define COSMOPOLITAN_LIBC_FMT_FMT_H_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § string formatting                                         ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#if __SIZEOF_POINTER__ == 8
+#define POINTER_XDIGITS 12 /* math.log(2**48-1,16) */
+#else
+#define POINTER_XDIGITS 8
+#endif
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int snprintf(char *, size_t, const char *, ...) printfesque(3)
+    paramsnonnull((3)) nothrow nocallback;
+int vsnprintf(char *, size_t, const char *, va_list)
+    paramsnonnull((3)) nothrow nocallback;
+int sprintf(char *, const char *, ...) printfesque(2)
+    paramsnonnull((2)) nothrow nocallback frownedupon(snprintf);
+int vsprintf(char *, const char *, va_list)
+    paramsnonnull((2)) nothrow nocallback frownedupon(vsnprintf);
+int sscanf(const char *, const char *, ...) scanfesque(2);
+int vsscanf(const char *, const char *, va_list);
+int vcscanf(int (*)(void *), int (*)(int, void *), void *, const char *,
+            va_list);
+int strerror_r(int, char *, size_t) nothrow nocallback;
+int __fmt(void *, void *, const char *, va_list) hidden;
+char *itoa(int, char *, int) compatfn;
+char *fcvt(double, int, int *, int *);
+char *ecvt(double, int, int *, int *);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § string formatting » optimizations                         ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define sprintf(BUF, FMT, ...)        (sprintf)(BUF, PFLINK(FMT), ##__VA_ARGS__)
+#define vsprintf(BUF, FMT, VA)        (vsprintf)(BUF, PFLINK(FMT), VA)
+#define snprintf(B, Z, F, ...)        (snprintf)(B, Z, PFLINK(F), ##__VA_ARGS__)
+#define vsnprintf(BUF, SIZE, FMT, VA) (vsnprintf)(BUF, SIZE, PFLINK(FMT), VA)
+#define sscanf(STR, FMT, ...)         (sscanf)(STR, SFLINK(FMT), ##__VA_ARGS__)
+#define vsscanf(STR, FMT, VA)         (vsscanf)(STR, SFLINK(FMT), VA)
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/fmt/itoa.h */
+
+#define COSMOPOLITAN_LIBC_FMT_ITOA_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § integer conversion                                        ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+  FASTEST + TINY
+
+  - uint64toarray_radix10(0x31337, a)         l: 68 (20ns) m: 112 (33ns)
+  - int64toarray_radix10(0x31337, a)          l: 69 (20ns) m: 134 (39ns)
+
+  FAST + AWESOME
+
+  - snprintf(a, sizeof(a), "%d", 0x31337)     l: 199 (58ns) m: 421 (123ns)
+  - uint128toarray_radix10(0x31337, a)        l: 93 (27ns) m: 141 (41ns)
+  - int128toarray_radix10(0x31337, a)         l: 96 (28ns) m: 173 (51ns) */
+
+size_t int64toarray_radix10(int64_t, char[hasatleast 21]);
+size_t uint64toarray_radix10(uint64_t, char[hasatleast 21]);
+size_t uint64toarray_radix16(uint64_t, char[hasatleast 17]);
+size_t uint64toarray_fixed16(uint64_t, char[hasatleast 17], uint8_t);
+size_t uint64toarray_radix8(uint64_t, char[hasatleast 24]);
+
+#ifndef __STRICT_ANSI__
+size_t int128toarray_radix10(int128_t, char *);
+size_t uint128toarray_radix10(uint128_t, char *);
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/fmt/leb128.h */
+
+#define COSMOPOLITAN_LIBC_FMT_LEB128_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#ifndef __STRICT_ANSI__
+int sleb128(const void *, size_t, int128_t);
+int unsleb128(const void *, size_t, int128_t *);
+#endif /* ANSI */
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/macros.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_MACROS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define INTRIN_COMMUTATIVE "%"
+#define INTRIN_NONCOMMUTATIVE
+
+#if defined(__x86_64__) && !defined(__STRICT_ANSI__)
+
+typedef char __intrin_xmm_t _Vector_size(16) forcealign(16) mayalias;
+
+#define INTRIN_SSEVEX_X_X_X_(PURE, ISA, OP, FLAGS, A, B, C)                    \
+  do {                                                                         \
+    if (!IsModeDbg() && X86_HAVE(ISA)) {                                       \
+      __intrin_xmm_t *Xmm0 = (void *)(A);                                      \
+      const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(B);                \
+      const __intrin_xmm_t *Xmm2 = (const __intrin_xmm_t *)(C);                \
+      if (!X86_NEED(AVX)) {                                                    \
+        asm(OP "\t%1,%0" : "=x"(*Xmm0) : FLAGS "x"(*Xmm2), "0"(*Xmm1));        \
+      } else {                                                                 \
+        asm("v" OP "\t%2,%1,%0" : "=x"(*Xmm0) : FLAGS "x"(*Xmm1), "x"(*Xmm2)); \
+      }                                                                        \
+    } else {                                                                   \
+      PURE(A, B, C);                                                           \
+    }                                                                          \
+  } while (0)
+
+#define INTRIN_SSEVEX_X_X_I_(PURE, ISA, OP, A, B, I)                 \
+  do {                                                               \
+    if (!IsModeDbg() && X86_HAVE(ISA)) {                             \
+      __intrin_xmm_t *Xmm0 = (void *)(A);                            \
+      const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(B);      \
+      if (!X86_NEED(AVX)) {                                          \
+        asm(OP "\t%2,%1,%0" : "=x"(*Xmm0) : "x"(*Xmm1), "i"(I));     \
+      } else {                                                       \
+        asm("v" OP "\t%2,%1,%0" : "=x"(*Xmm0) : "x"(*Xmm1), "i"(I)); \
+      }                                                              \
+    } else {                                                         \
+      PURE(A, B, I);                                                 \
+    }                                                                \
+  } while (0)
+
+#define INTRIN_SSEVEX_X_X_(PURE, ISA, OP, A, B)                 \
+  do {                                                          \
+    if (!IsModeDbg() && X86_HAVE(ISA)) {                        \
+      __intrin_xmm_t *Xmm0 = (void *)(A);                       \
+      const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(B); \
+      if (!X86_NEED(AVX)) {                                     \
+        asm(OP "\t%1,%0" : "=x"(*Xmm0) : "0"(*Xmm1));           \
+      } else {                                                  \
+        asm("v" OP "\t%1,%0" : "=x"(*Xmm0) : "x"(*Xmm1));       \
+      }                                                         \
+    } else {                                                    \
+      PURE(A, B);                                               \
+    }                                                           \
+  } while (0)
+
+#define INTRIN_SSEVEX_X_I_(PURE, ISA, OP, A, B, I)                   \
+  do {                                                               \
+    if (!IsModeDbg() && X86_HAVE(ISA)) {                             \
+      __intrin_xmm_t *Xmm0 = (void *)(A);                            \
+      const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(B);      \
+      if (!X86_NEED(AVX)) {                                          \
+        asm(OP "\t%1,%0" : "=x"(*Xmm0) : "i"(I), "0"(*Xmm1));        \
+      } else {                                                       \
+        asm("v" OP "\t%2,%1,%0" : "=x"(*Xmm0) : "x"(*Xmm1), "i"(I)); \
+      }                                                              \
+    } else {                                                         \
+      PURE(A, B, I);                                                 \
+    }                                                                \
+  } while (0)
+
+#else
+#define INTRIN_SSEVEX_X_X_X_(PURE, ISA, OP, FLAGS, A, B, C) PURE(A, B, C)
+#define INTRIN_SSEVEX_X_X_I_(PURE, ISA, OP, A, B, I)        PURE(A, B, I)
+#define INTRIN_SSEVEX_X_I_(PURE, ISA, OP, A, B, I)          PURE(A, B, I)
+#endif /* X86 && !ANSI */
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/mpsadbw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_MPSADBW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void mpsadbw(uint16_t[8], const uint8_t[16], const uint8_t[16], uint8_t);
+
+#ifndef __STRICT_ANSI__
+__intrin_xmm_t __mpsadbws(__intrin_xmm_t, __intrin_xmm_t);
+#define mpsadbw(C, B, A, I)                                                   \
+  do {                                                                        \
+    if (__builtin_expect(!IsModeDbg() && X86_NEED(SSE) && X86_HAVE(SSE4_1),   \
+                         1)) {                                                \
+      __intrin_xmm_t *Xmm0 = (void *)(C);                                     \
+      const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(B);               \
+      const __intrin_xmm_t *Xmm2 = (const __intrin_xmm_t *)(A);               \
+      if (__builtin_constant_p(I)) {                                          \
+        if (!X86_NEED(AVX)) {                                                 \
+          asm("mpsadbw\t%2,%1,%0"                                             \
+              : "=x"(*Xmm0)                                                   \
+              : "x"(*Xmm2), "i"(I), "0"(*Xmm1));                              \
+        } else {                                                              \
+          asm("vmpsadbw\t%3,%2,%1,%0"                                         \
+              : "=x"(*Xmm0)                                                   \
+              : "x"(*Xmm1), "x"(*Xmm2), "i"(I));                              \
+        }                                                                     \
+      } else {                                                                \
+        unsigned long Vimm = (I);                                             \
+        typeof(__mpsadbws) *Fn;                                               \
+        Fn = (typeof(__mpsadbws) *)((uintptr_t)&__mpsadbws + (Vimm & 7) * 8); \
+        *Xmm0 = Fn(*Xmm1, *Xmm2);                                             \
+      }                                                                       \
+    } else {                                                                  \
+      mpsadbw(C, B, A, I);                                                    \
+    }                                                                         \
+  } while (0)
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pabsb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PABSB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pabsb(uint8_t[16], const int8_t[16]);
+
+#define pabsb(A, B) INTRIN_SSEVEX_X_X_(pabsb, SSSE3, "pabsb", A, B)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pabsd.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PABSD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pabsd(uint32_t[4], const int32_t[4]);
+
+#define pabsd(A, B) INTRIN_SSEVEX_X_X_(pabsd, SSSE3, "pabsd", A, B)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pabsw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PABSW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pabsw(uint16_t[8], const int16_t[8]);
+
+#define pabsw(A, B) INTRIN_SSEVEX_X_X_(pabsw, SSSE3, "pabsw", A, B)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/packssdw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PACKSSDW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void packssdw(int16_t[8], const int32_t[4], const int32_t[4]);
+
+#define packssdw(A, B, C)                                                    \
+  INTRIN_SSEVEX_X_X_X_(packssdw, SSE2, "packssdw", INTRIN_NONCOMMUTATIVE, A, \
+                       B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/packsswb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PACKSSWB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void packsswb(int8_t[16], const int16_t[8], const int16_t[8]);
+
+#define packsswb(A, B, C)                                                    \
+  INTRIN_SSEVEX_X_X_X_(packsswb, SSE2, "packsswb", INTRIN_NONCOMMUTATIVE, A, \
+                       B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/packusdw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PACKUSDW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void packusdw(uint16_t[8], const int32_t[4], const int32_t[4]);
+
+#define packusdw(A, B, C)                                                      \
+  INTRIN_SSEVEX_X_X_X_(packusdw, SSE4_1, "packusdw", INTRIN_NONCOMMUTATIVE, A, \
+                       B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/packuswb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PACKUSWB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void packuswb(uint8_t[16], const int16_t[8], const int16_t[8]);
+
+#define packuswb(A, B, C)                                                    \
+  INTRIN_SSEVEX_X_X_X_(packuswb, SSE2, "packuswb", INTRIN_NONCOMMUTATIVE, A, \
+                       B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/paddb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PADDB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void paddb(int8_t[16], const int8_t[16], const int8_t[16]);
+
+#define paddb(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(paddb, SSE2, "paddb", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/paddd.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PADDD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void paddd(int32_t[4], const int32_t[4], const int32_t[4]);
+
+#define paddd(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(paddd, SSE2, "paddd", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/paddq.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PADDQ_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void paddq(int64_t[2], const int64_t[2], const int64_t[2]);
+
+#define paddq(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(paddq, SSE2, "paddq", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/paddsb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PADDSB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void paddsb(int8_t[16], const int8_t[16], const int8_t[16]);
+
+#define paddsb(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(paddsb, SSE2, "paddsb", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/paddsw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PADDSW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void paddsw(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define paddsw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(paddsw, SSE2, "paddsw", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/paddusb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PADDUSB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void paddusb(uint8_t[16], const uint8_t[16], const uint8_t[16]);
+
+#define paddusb(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(paddusb, SSE2, "paddusb", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/paddusw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PADDUSW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void paddusw(uint16_t[8], const uint16_t[8], const uint16_t[8]);
+
+#define paddusw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(paddusw, SSE2, "paddusw", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/paddw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PADDW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void paddw(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define paddw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(paddw, SSE2, "paddw", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/palignr.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PALIGNR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void palignr(void *, const void *, const void *, unsigned long);
+
+#if !defined(__STRICT_ANSI__) && !defined(__chibicc__)
+__intrin_xmm_t __palignrs(__intrin_xmm_t, __intrin_xmm_t);
+#define palignr(C, B, A, I)                                                \
+  do {                                                                     \
+    if (__builtin_expect(!IsModeDbg() && X86_NEED(SSE) && X86_HAVE(SSSE3), \
+                         1)) {                                             \
+      __intrin_xmm_t *Xmm0 = (void *)(C);                                  \
+      const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(B);            \
+      const __intrin_xmm_t *Xmm2 = (const __intrin_xmm_t *)(A);            \
+      if (__builtin_constant_p(I)) {                                       \
+        if (!X86_NEED(AVX)) {                                              \
+          asm("palignr\t%2,%1,%0"                                          \
+              : "=x"(*Xmm0)                                                \
+              : "x"(*Xmm2), "i"(I), "0"(*Xmm1));                           \
+        } else {                                                           \
+          asm("vpalignr\t%3,%2,%1,%0"                                      \
+              : "=x"(*Xmm0)                                                \
+              : "x"(*Xmm1), "x"(*Xmm2), "i"(I));                           \
+        }                                                                  \
+      } else {                                                             \
+        unsigned long Vimm = (I);                                          \
+        typeof(__palignrs) *Fn;                                            \
+        if (__builtin_expect(Vimm < 32, 1)) {                              \
+          Fn = (typeof(__palignrs) *)((uintptr_t)&__palignrs + Vimm * 8);  \
+          *Xmm0 = Fn(*Xmm1, *Xmm2);                                        \
+        } else {                                                           \
+          memset(Xmm0, 0, 16);                                             \
+        }                                                                  \
+      }                                                                    \
+    } else {                                                               \
+      palignr(C, B, A, I);                                                 \
+    }                                                                      \
+  } while (0)
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pand.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PAND_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pand(uint64_t[2], const uint64_t[2], const uint64_t[2]);
+
+#define pand(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pand, SSE2, "pand", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pandn.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PANDN_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pandn(uint64_t[2], const uint64_t[2], const uint64_t[2]);
+
+#define pandn(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pandn, SSE2, "pandn", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pavgb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PAVGB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pavgb(uint8_t[16], const uint8_t[16], const uint8_t[16]);
+
+#define pavgb(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pavgb, SSE2, "pavgb", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pavgw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PAVGW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pavgw(uint16_t[8], const uint16_t[8], const uint16_t[8]);
+
+#define pavgw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pavgw, SSE2, "pavgw", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pcmpeqb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PCMPEQB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pcmpeqb(uint8_t[16], const uint8_t[16], const uint8_t[16]);
+
+#define pcmpeqb(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pcmpeqb, SSE2, "pcmpeqb", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pcmpeqd.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PCMPEQD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pcmpeqd(int32_t[4], const int32_t[4], const int32_t[4]);
+
+#define pcmpeqd(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pcmpeqd, SSE2, "pcmpeqd", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pcmpeqw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PCMPEQW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pcmpeqw(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define pcmpeqw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pcmpeqw, SSE2, "pcmpeqw", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pcmpgtb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PCMPGTB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pcmpgtb(int8_t[16], const int8_t[16], const int8_t[16]);
+
+#define pcmpgtb(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pcmpgtb, SSE2, "pcmpgtb", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pcmpgtd.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PCMPGTD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pcmpgtd(int32_t[4], const int32_t[4], const int32_t[4]);
+
+#define pcmpgtd(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pcmpgtd, SSE2, "pcmpgtd", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pcmpgtw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PCMPGTW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pcmpgtw(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define pcmpgtw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pcmpgtw, SSE2, "pcmpgtw", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/phaddd.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PHADDD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void phaddd(int32_t[4], const int32_t[4], const int32_t[4]);
+
+#define phaddd(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(phaddd, SSSE3, "phaddd", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/phaddsw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PHADDSW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void phaddsw(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define phaddsw(A, B, C)                                                       \
+  INTRIN_SSEVEX_X_X_X_(phaddsw, SSSE3, "phaddsw", INTRIN_NONCOMMUTATIVE, A, B, \
+                       C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/phaddw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PHADDW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void phaddw(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define phaddw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(phaddw, SSSE3, "phaddw", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/phsubd.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PHSUBD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void phsubd(int32_t[4], const int32_t[4], const int32_t[4]);
+
+#define phsubd(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(phsubd, SSSE3, "phsubd", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/phsubsw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PHSUBSW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void phsubsw(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define phsubsw(A, B, C)                                                       \
+  INTRIN_SSEVEX_X_X_X_(phsubsw, SSSE3, "phsubsw", INTRIN_NONCOMMUTATIVE, A, B, \
+                       C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/phsubw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PHSUBW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void phsubw(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define phsubw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(phsubw, SSSE3, "phsubw", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pmaddubsw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PMADDUBSW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pmaddubsw(int16_t[8], const uint8_t[16], const int8_t[16]);
+
+#define pmaddubsw(W, B, C)                                                   \
+  INTRIN_SSEVEX_X_X_X_(pmaddubsw, SSSE3, "pmaddubsw", INTRIN_NONCOMMUTATIVE, \
+                       W, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pmaddwd.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PMADDWD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pmaddwd(int32_t[4], const int16_t[8], const int16_t[8]);
+
+#define pmaddwd(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pmaddwd, SSE2, "pmaddwd", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pmaxsw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PMAXSW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pmaxsw(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define pmaxsw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pmaxsw, SSE2, "pmaxsw", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pmaxub.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PMAXUB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pmaxub(unsigned char[16], const unsigned char[16],
+            const unsigned char[16]);
+
+#define pmaxub(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pmaxub, SSE2, "pmaxub", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pminsw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PMINSW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pminsw(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define pminsw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pminsw, SSE2, "pminsw", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pminub.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PMINUB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pminub(unsigned char[16], const unsigned char[16],
+            const unsigned char[16]);
+
+#define pminub(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pminub, SSE2, "pminub", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pmovmskb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PMOVMSKB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+uint32_t pmovmskb(const uint8_t[16]);
+
+#define pmovmskb(A)                                            \
+  ({                                                           \
+    uint32_t Mask;                                             \
+    if (!IsModeDbg() && X86_HAVE(SSE2)) {                      \
+      const __intrin_xmm_t *Xmm = (const __intrin_xmm_t *)(A); \
+      if (!X86_NEED(AVX)) {                                    \
+        asm("pmovmskb\t%1,%0" : "=r"(Mask) : "x"(*Xmm));       \
+      } else {                                                 \
+        asm("vpmovmskb\t%1,%0" : "=r"(Mask) : "x"(*Xmm));      \
+      }                                                        \
+    } else {                                                   \
+      Mask = pmovmskb(A);                                      \
+    }                                                          \
+    Mask;                                                      \
+  })
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pmulhrsw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PMULHRSW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pmulhrsw(int16_t a[8], const int16_t b[8], const int16_t c[8]);
+
+#define pmulhrsw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pmulhrsw, SSSE3, "pmulhrsw", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pmulhuw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PMULHUW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pmulhuw(uint16_t[8], const uint16_t[8], const uint16_t[8]);
+
+#define pmulhuw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pmulhuw, SSE2, "pmulhuw", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pmulhw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PMULHW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pmulhw(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define pmulhw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pmulhw, SSE2, "pmulhw", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pmulld.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PMULLD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pmulld(int32_t[4], const int32_t[4], const int32_t[4]);
+
+#define pmulld(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pmulld, SSE4_1, "pmulld", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pmullw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PMULLW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pmullw(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define pmullw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pmullw, SSE2, "pmullw", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pmuludq.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PMULUDQ_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pmuludq(uint64_t[2], const uint32_t[4], const uint32_t[4]);
+
+#define pmuludq(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pmuludq, SSE2, "pmuludq", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/por.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_POR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void por(uint64_t[2], const uint64_t[2], const uint64_t[2]);
+
+#define por(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(por, SSE2, "por", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psadbw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSADBW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psadbw(uint64_t[2], const uint8_t[16], const uint8_t[16]);
+
+#define psadbw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psadbw, SSE2, "psadbw", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pshufb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSHUFB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pshufb(uint8_t[16], const uint8_t[16], const uint8_t[16]);
+
+#define pshufb(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pshufb, SSSE3, "pshufb", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pshufd.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSHUFD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pshufd(int32_t[4], const int32_t[4], uint8_t);
+
+#define pshufd(A, B, I) INTRIN_SSEVEX_X_X_I_(pshufd, SSE2, "pshufd", A, B, I)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pshufhw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSHUFHW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pshufhw(int16_t[8], const int16_t[8], uint8_t);
+
+#define pshufhw(A, B, I) INTRIN_SSEVEX_X_X_I_(pshufhw, SSE2, "pshufhw", A, B, I)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pshuflw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSHUFLW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pshuflw(int16_t[8], const int16_t[8], uint8_t);
+
+#define pshuflw(A, B, I) INTRIN_SSEVEX_X_X_I_(pshuflw, SSE2, "pshuflw", A, B, I)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pshufw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSHUFW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pshufw(int16_t[4], const int16_t[4], uint8_t);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psignb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSIGNB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psignb(int8_t[16], const int8_t[16], const int8_t[16]);
+
+#define psignb(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psignb, SSSE3, "psignb", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psignd.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSIGND_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psignd(int32_t[4], const int32_t[4], const int32_t[4]);
+
+#define psignd(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psignd, SSSE3, "psignd", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psignw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSIGNW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psignw(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define psignw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psignw, SSSE3, "psignw", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pslld.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSLLD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pslld(uint32_t[4], const uint32_t[4], unsigned char);
+void pslldv(uint32_t[4], const uint32_t[4], const uint64_t[2]);
+
+#define pslld(A, B, I) INTRIN_SSEVEX_X_I_(pslld, SSE2, "pslld", A, B, I)
+#define pslldv(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pslldv, SSE2, "pslld", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pslldq.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSLLDQ_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pslldq(uint8_t[16], const uint8_t[16], unsigned long);
+
+#ifndef __STRICT_ANSI__
+__intrin_xmm_t __pslldqs(__intrin_xmm_t);
+#define pslldq(B, A, I)                                                   \
+  do {                                                                    \
+    if (__builtin_expect(!IsModeDbg() && X86_NEED(SSE) && X86_HAVE(SSE2), \
+                         1)) {                                            \
+      __intrin_xmm_t *Xmm0 = (void *)(B);                                 \
+      const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(A);           \
+      if (__builtin_constant_p(I)) {                                      \
+        if (!X86_NEED(AVX)) {                                             \
+          asm("pslldq\t%1,%0" : "=x"(*Xmm0) : "i"(I), "0"(*Xmm1));        \
+        } else {                                                          \
+          asm("vpslldq\t%2,%1,%0" : "=x"(*Xmm0) : "x"(*Xmm1), "i"(I));    \
+        }                                                                 \
+      } else {                                                            \
+        unsigned long Vimm = (I);                                         \
+        typeof(__pslldqs) *Fn;                                            \
+        if (Vimm > 16) Vimm = 16;                                         \
+        Fn = (typeof(__pslldqs) *)((uintptr_t)&__pslldqs + Vimm * 8);     \
+        *Xmm0 = Fn(*Xmm1);                                                \
+      }                                                                   \
+    } else {                                                              \
+      pslldq(B, A, I);                                                    \
+    }                                                                     \
+  } while (0)
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psllq.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSLLQ_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psllq(uint64_t[2], const uint64_t[2], unsigned char);
+void psllqv(uint64_t[2], const uint64_t[2], const uint64_t[2]);
+
+#define psllq(A, B, I) INTRIN_SSEVEX_X_I_(psllq, SSE2, "psllq", A, B, I)
+#define psllqv(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psllqv, SSE2, "psllq", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psllw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSLLW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psllw(uint16_t[8], const uint16_t[8], unsigned char);
+void psllwv(uint16_t[8], const uint16_t[8], const uint64_t[2]);
+
+#define psllw(A, B, I) INTRIN_SSEVEX_X_I_(psllw, SSE2, "psllw", A, B, I)
+#define psllwv(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psllwv, SSE2, "psllw", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psrad.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSRAD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psrad(int32_t[4], const int32_t[4], unsigned char);
+void psradv(int32_t[4], const int32_t[4], const uint64_t[2]);
+
+#define psrad(A, B, I) INTRIN_SSEVEX_X_I_(psrad, SSE2, "psrad", A, B, I)
+#define psradv(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psradv, SSE2, "psrad", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psraw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSRAW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psraw(int16_t[8], const int16_t[8], unsigned char);
+void psrawv(int16_t[8], const int16_t[8], const uint64_t[2]);
+
+#define psraw(A, B, I) INTRIN_SSEVEX_X_I_(psraw, SSE2, "psraw", A, B, I)
+#define psrawv(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psrawv, SSE2, "psraw", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psrld.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSRLD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psrld(uint32_t[4], const uint32_t[4], unsigned char);
+void psrldv(uint32_t[4], const uint32_t[4], const uint64_t[2]);
+
+#define psrld(A, B, I) INTRIN_SSEVEX_X_I_(psrld, SSE2, "psrld", A, B, I)
+#define psrldv(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psrldv, SSE2, "psrld", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psrldq.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSRLDQ_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psrldq(uint8_t[16], const uint8_t[16], unsigned long);
+
+#ifndef __STRICT_ANSI__
+__intrin_xmm_t __psrldqs(__intrin_xmm_t);
+#define psrldq(B, A, I)                                                   \
+  do {                                                                    \
+    if (__builtin_expect(!IsModeDbg() && X86_NEED(SSE) && X86_HAVE(SSE2), \
+                         1)) {                                            \
+      __intrin_xmm_t *Xmm0 = (void *)(B);                                 \
+      const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(A);           \
+      if (__builtin_constant_p(I)) {                                      \
+        if (!X86_NEED(AVX)) {                                             \
+          asm("psrldq\t%1,%0" : "=x"(*Xmm0) : "i"(I), "0"(*Xmm1));        \
+        } else {                                                          \
+          asm("vpsrldq\t%2,%1,%0" : "=x"(*Xmm0) : "x"(*Xmm1), "i"(I));    \
+        }                                                                 \
+      } else {                                                            \
+        unsigned long Vimm = (I);                                         \
+        typeof(__psrldqs) *Fn;                                            \
+        if (Vimm > 16) Vimm = 16;                                         \
+        Fn = (typeof(__psrldqs) *)((uintptr_t)&__psrldqs + Vimm * 8);     \
+        *Xmm0 = Fn(*Xmm1);                                                \
+      }                                                                   \
+    } else {                                                              \
+      psrldq(B, A, I);                                                    \
+    }                                                                     \
+  } while (0)
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psrlq.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSRLQ_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psrlq(uint64_t[2], const uint64_t[2], unsigned char);
+void psrlqv(uint64_t[2], const uint64_t[2], const uint64_t[2]);
+
+#define psrlq(A, B, I) INTRIN_SSEVEX_X_I_(psrlq, SSE2, "psrlq", A, B, I)
+#define psrlqv(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psrlqv, SSE2, "psrlq", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psrlw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSRLW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psrlw(uint16_t[8], const uint16_t[8], unsigned char);
+void psrlwv(uint16_t[8], const uint16_t[8], const uint64_t[2]);
+
+#define psrlw(A, B, I) INTRIN_SSEVEX_X_I_(psrlw, SSE2, "psrlw", A, B, I)
+#define psrlwv(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psrlwv, SSE2, "psrlw", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psubb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSUBB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psubb(uint8_t[16], const uint8_t[16], const uint8_t[16]);
+
+#define psubb(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psubb, SSE2, "psubb", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psubd.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSUBD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psubd(int32_t[4], const int32_t[4], const int32_t[4]);
+
+#define psubd(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psubd, SSE2, "psubd", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psubq.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSUBQ_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psubq(int64_t[2], const int64_t[2], const int64_t[2]);
+
+#define psubq(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psubq, SSE2, "psubq", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psubsb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSUBSB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psubsb(int8_t[16], const int8_t[16], const int8_t[16]);
+
+#define psubsb(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psubsb, SSE2, "psubsb", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psubsw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSUBSW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psubsw(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define psubsw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psubsw, SSE2, "psubsw", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psubusb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSUBUSB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psubusb(uint8_t[16], const uint8_t[16], const uint8_t[16]);
+
+#define psubusb(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psubusb, SSE2, "psubusb", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psubusw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSUBUSW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void psubusw(uint16_t[8], const uint16_t[8], const uint16_t[8]);
+
+#define psubusw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psubusw, SSE2, "psubusw", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/psubw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PSUBW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void(psubw)(int16_t[8], const int16_t[8], const int16_t[8]);
+
+#define psubw(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(psubw, SSE2, "psubw", INTRIN_NONCOMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/punpckhbw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKHBW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void punpckhbw(uint8_t[16], const uint8_t[16], const uint8_t[16]);
+
+#define punpckhbw(A, B, C)                                                     \
+  INTRIN_SSEVEX_X_X_X_(punpckhbw, SSE2, "punpckhbw", INTRIN_NONCOMMUTATIVE, A, \
+                       B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/punpckhdq.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKHDQ_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void punpckhdq(uint32_t[4], const uint32_t[4], const uint32_t[4]);
+
+#define punpckhdq(A, B, C)                                                     \
+  INTRIN_SSEVEX_X_X_X_(punpckhdq, SSE2, "punpckhdq", INTRIN_NONCOMMUTATIVE, A, \
+                       B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/punpckhqdq.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKHQDQ_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void punpckhqdq(uint64_t[2], const uint64_t[2], const uint64_t[2]);
+
+#define punpckhqdq(A, B, C)                                                   \
+  INTRIN_SSEVEX_X_X_X_(punpckhqdq, SSE2, "punpckhqdq", INTRIN_NONCOMMUTATIVE, \
+                       A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/punpckhwd.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKHWD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void punpckhwd(uint16_t[8], const uint16_t[8], const uint16_t[8]);
+
+#define punpckhwd(A, B, C)                                                     \
+  INTRIN_SSEVEX_X_X_X_(punpckhwd, SSE2, "punpckhwd", INTRIN_NONCOMMUTATIVE, A, \
+                       B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/punpcklbw.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKLBW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void punpcklbw(uint8_t[16], const uint8_t[16], const uint8_t[16]);
+
+#define punpcklbw(A, B, C)                                                     \
+  INTRIN_SSEVEX_X_X_X_(punpcklbw, SSE2, "punpcklbw", INTRIN_NONCOMMUTATIVE, A, \
+                       B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/punpckldq.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKLDQ_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void punpckldq(uint32_t[4], const uint32_t[4], const uint32_t[4]);
+
+#define punpckldq(A, B, C)                                                     \
+  INTRIN_SSEVEX_X_X_X_(punpckldq, SSE2, "punpckldq", INTRIN_NONCOMMUTATIVE, A, \
+                       B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/punpcklqdq.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKLQDQ_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void punpcklqdq(uint64_t[2], const uint64_t[2], const uint64_t[2]);
+
+#define punpcklqdq(A, B, C)                                                   \
+  INTRIN_SSEVEX_X_X_X_(punpcklqdq, SSE2, "punpcklqdq", INTRIN_NONCOMMUTATIVE, \
+                       A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/punpcklwd.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKLWD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void punpcklwd(uint16_t[8], const uint16_t[8], const uint16_t[8]);
+
+#define punpcklwd(A, B, C)                                                     \
+  INTRIN_SSEVEX_X_X_X_(punpcklwd, SSE2, "punpcklwd", INTRIN_NONCOMMUTATIVE, A, \
+                       B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/pxor.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_PXOR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void pxor(uint64_t[2], const uint64_t[2], const uint64_t[2]);
+
+#define pxor(A, B, C) \
+  INTRIN_SSEVEX_X_X_X_(pxor, SSE2, "pxor", INTRIN_COMMUTATIVE, A, B, C)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/repmovsb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_REPMOVSB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+forceinline void repmovsb(void **dest, const void **src, size_t cx) {
+  char *di = (char *)*dest;
+  const char *si = (const char *)*src;
+  while (cx) *di++ = *si++, cx--;
+  *dest = di, *src = si;
+}
+
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+#define repmovsb(DI, SI, CX)                                       \
+  ({                                                               \
+    void *Di = *(DI);                                              \
+    const void *Si = *(SI);                                        \
+    size_t Cx = (CX);                                              \
+    asm("rep movsb"                                                \
+        : "=D"(Di), "=S"(Si), "=c"(Cx), "=m"(*(char(*)[Cx])Di)     \
+        : "0"(Di), "1"(Si), "2"(Cx), "m"(*(const char(*)[Cx])Si)); \
+    *(DI) = Di, *(SI) = Si;                                        \
+  })
+#endif
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/repstosb.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_REPSTOSB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+forceinline void *repstosb(void *dest, unsigned char al, size_t cx) {
+  unsigned char *di = (unsigned char *)dest;
+  while (cx) *di++ = al, cx--;
+  return di;
+}
+
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+#define repstosb(DI, AL, CX)                         \
+  ({                                                 \
+    void *Di = (DI);                                 \
+    size_t Cx = (CX);                                \
+    unsigned char Al = (AL);                         \
+    asm("rep stosb %b5,(%0)"                         \
+        : "=D"(Di), "=c"(Cx), "=m"(*(char(*)[Cx])Di) \
+        : "0"(Di), "1"(Cx), "a"(Al));                \
+    Di;                                              \
+  })
+#endif
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/shufpd.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_SHUFPD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void shufpd(double[2], const double[2], const double[2], uint8_t);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/intrin/shufps.h */
+
+#define COSMOPOLITAN_LIBC_INTRIN_SHUFPS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void shufps(float[4], const float[4], const float[4], uint8_t);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/log/bsd.h */
+
+#define COSMOPOLITAN_LIBC_LOG_BSD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § logging » berkeley logger                                 ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+void err(int, const char *, ...) printfesque(2) wontreturn;
+void errx(int, const char *, ...) printfesque(2) wontreturn;
+void verr(int, const char *, va_list) paramsnonnull((3)) wontreturn;
+void verrx(int, const char *, va_list) paramsnonnull((3)) wontreturn;
+void vwarn(const char *, va_list) paramsnonnull((2));
+void vwarnx(const char *, va_list) paramsnonnull((2));
+void warn(const char *, ...) printfesque(1);
+void warnx(const char *, ...) printfesque(1);
+
+#define err(EVAL, FMT, ...)  (err)(EVAL, PFLINK(FMT), ##__VA_ARGS__)
+#define errx(EVAL, FMT, ...) (errx)(EVAL, PFLINK(FMT), ##__VA_ARGS__)
+#define verr(EVAL, FMT, VA)  (verr)(EVAL, PFLINK(FMT), VA)
+#define verrx(EVAL, FMT, VA) (verrx)(EVAL, PFLINK(FMT), VA)
+#define vwarn(FMT, VA)       (vwarn)(PFLINK(FMT), VA)
+#define vwarnx(FMT, VA)      (vwarnx)(PFLINK(FMT), VA)
+#define warn(FMT, ...)       (warn)(PFLINK(FMT), ##__VA_ARGS__)
+#define warnx(FMT, ...)      (warn)(PFLINK(FMT), ##__VA_ARGS__)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/log/check.h */
+
+#define COSMOPOLITAN_LIBC_LOG_CHECK_H_
+
+/**
+ * @fileoverview Modern assertions, courtesy of Elgoog.
+ */
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#define CHECK(X, ...)         __CHK(ne, !=, false, "false", !!(X), #X, "" __VA_ARGS__)
+#define CHECK_EQ(Y, X, ...)   __CHK(eq, ==, Y, #Y, X, #X, "" __VA_ARGS__)
+#define CHECK_NE(Y, X, ...)   __CHK(ne, !=, Y, #Y, X, #X, "" __VA_ARGS__)
+#define CHECK_LE(Y, X, ...)   __CHK(le, <=, Y, #Y, X, #X, "" __VA_ARGS__)
+#define CHECK_LT(Y, X, ...)   __CHK(lt, <, Y, #Y, X, #X, "" __VA_ARGS__)
+#define CHECK_GE(Y, X, ...)   __CHK(ge, >=, Y, #Y, X, #X, "" __VA_ARGS__)
+#define CHECK_GT(Y, X, ...)   __CHK(gt, >, Y, #Y, X, #X, "" __VA_ARGS__)
+#define CHECK_NOTNULL(X, ...) __CHK(ne, !=, NULL, "NULL", X, #X, "" __VA_ARGS__)
+
+#define DCHECK(X, ...)       __DCHK(ne, !=, false, "false", !!(X), #X, "" __VA_ARGS__)
+#define DCHECK_EQ(Y, X, ...) __DCHK(eq, ==, Y, #Y, X, #X, "" __VA_ARGS__)
+#define DCHECK_NE(Y, X, ...) __DCHK(ne, !=, Y, #Y, X, #X, "" __VA_ARGS__)
+#define DCHECK_LE(Y, X, ...) __DCHK(le, <=, Y, #Y, X, #X, "" __VA_ARGS__)
+#define DCHECK_LT(Y, X, ...) __DCHK(lt, <, Y, #Y, X, #X, "" __VA_ARGS__)
+#define DCHECK_GE(Y, X, ...) __DCHK(ge, >=, Y, #Y, X, #X, "" __VA_ARGS__)
+#define DCHECK_GT(Y, X, ...) __DCHK(gt, >, Y, #Y, X, #X, "" __VA_ARGS__)
+#define DCHECK_NOTNULL(X, ...) \
+  __DCHK(ne, !=, NULL, "NULL", X, #X, "" __VA_ARGS__)
+
+#define CHECK_ALIGNED(BYTES, VAR)                            \
+  do {                                                       \
+    if (((uintptr_t)VAR & ((BYTES)-1u))) {                   \
+      __check_fail_aligned(BYTES, (uintptr_t)VAR);           \
+      unreachable;                                           \
+    }                                                        \
+    VAR = (typeof(VAR))__builtin_assume_aligned(VAR, BYTES); \
+  } while (0)
+
+#define DCHECK_ALIGNED(BYTES, VAR)                           \
+  do {                                                       \
+    if (((uintptr_t)VAR & ((BYTES)-1u))) {                   \
+      __DCHK_ALIGNED(BYTES, (uintptr_t)VAR);                 \
+      unreachable;                                           \
+    }                                                        \
+    VAR = (typeof(VAR))__builtin_assume_aligned(VAR, BYTES); \
+  } while (0)
+
+#if defined(__VSCODE_INTELLISENSE__)
+#define __CHK(...)
+#else
+#define __CHK(SUFFIX, OP, WANT, WANTSTR, GOT, GOTSTR, ...)                   \
+  do {                                                                       \
+    autotype(GOT) Got = (GOT);                                               \
+    autotype(WANT) Want = (WANT);                                            \
+    if (!(Want OP Got)) {                                                    \
+      if (!NoDebug()) {                                                      \
+        __check_fail(#SUFFIX, #OP, (uint64_t)Want, (WANTSTR), (uint64_t)Got, \
+                     (GOTSTR), __FILE__, __LINE__, __VA_ARGS__);             \
+      } else {                                                               \
+        __check_fail_##SUFFIX((uint64_t)Want, (uint64_t)Got);                \
+      }                                                                      \
+      unreachable;                                                           \
+    }                                                                        \
+  } while (0)
+#endif /* defined(__VSCODE_INTELLISENSE__) */
+
+#if defined(__VSCODE_INTELLISENSE__)
+#define __DCHK(...)
+#else
+#ifdef NDEBUG
+#define __DCHK(SUFFIX, OP, WANT, WANTSTR, GOT, ...) \
+  do {                                              \
+    autotype(GOT) Got = (GOT);                      \
+    autotype(WANT) Want = (WANT);                   \
+    if (!(Want OP Got)) {                           \
+      unreachable;                                  \
+    }                                               \
+  } while (0)
+#else
+#define __DCHK(SUFFIX, OP, WANT, WANTSTR, GOT, GOTSTR, ...) \
+  __CHK(SUFFIX, OP, WANT, WANTSTR, GOT, GOTSTR, __VA_ARGS__)
+#endif /* NDEBUG */
+#endif /* defined(__VSCODE_INTELLISENSE__) */
+
+#ifdef NDEBUG
+#define __DCHK_ALIGNED(BYTES, VAR)
+#else
+#define __DCHK_ALIGNED(BYTES, VAR) __check_fail_aligned(BYTES, VAR)
+#endif
+
+void __check_fail(const char *, const char *, uint64_t, const char *, uint64_t,
+                  const char *, const char *, int, const char *,
+                  ...) relegated wontreturn;
+
+void __check_fail_eq(uint64_t, uint64_t) relegated wontreturn;
+void __check_fail_ne(uint64_t, uint64_t) relegated wontreturn;
+void __check_fail_le(uint64_t, uint64_t) relegated wontreturn;
+void __check_fail_lt(uint64_t, uint64_t) relegated wontreturn;
+void __check_fail_ge(uint64_t, uint64_t) relegated wontreturn;
+void __check_fail_gt(uint64_t, uint64_t) relegated wontreturn;
+void __check_fail_aligned(unsigned, uint64_t) relegated wontreturn;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/log/gdb.h */
+
+#define COSMOPOLITAN_LIBC_LOG_GDB_H_
+
+
+/*!BEGIN libc/sysv/consts/nr.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_NR_H_
+
+#define __NR_exit                    SYMBOLIC(__NR_exit)
+#define __NR_exit_group              SYMBOLIC(__NR_exit_group)
+#define __NR_read                    SYMBOLIC(__NR_read)
+#define __NR_write                   SYMBOLIC(__NR_write)
+#define __NR_open                    SYMBOLIC(__NR_open)
+#define __NR_close                   SYMBOLIC(__NR_close)
+#define __NR_stat                    SYMBOLIC(__NR_stat)
+#define __NR_fstat                   SYMBOLIC(__NR_fstat)
+#define __NR_lstat                   SYMBOLIC(__NR_lstat)
+#define __NR_poll                    SYMBOLIC(__NR_poll)
+#define __NR_ppoll                   SYMBOLIC(__NR_ppoll)
+#define __NR_lseek                   SYMBOLIC(__NR_lseek)
+#define __NR_mmap                    SYMBOLIC(__NR_mmap)
+#define __NR_msync                   SYMBOLIC(__NR_msync)
+#define __NR_mprotect                SYMBOLIC(__NR_mprotect)
+#define __NR_munmap                  SYMBOLIC(__NR_munmap)
+#define __NR_sigaction               SYMBOLIC(__NR_sigaction)
+#define __NR_sigprocmask             SYMBOLIC(__NR_sigprocmask)
+#define __NR_ioctl                   SYMBOLIC(__NR_ioctl)
+#define __NR_pread                   SYMBOLIC(__NR_pread)
+#define __NR_pwrite                  SYMBOLIC(__NR_pwrite)
+#define __NR_readv                   SYMBOLIC(__NR_readv)
+#define __NR_writev                  SYMBOLIC(__NR_writev)
+#define __NR_access                  SYMBOLIC(__NR_access)
+#define __NR_pipe                    SYMBOLIC(__NR_pipe)
+#define __NR_select                  SYMBOLIC(__NR_select)
+#define __NR_pselect                 SYMBOLIC(__NR_pselect)
+#define __NR_pselect6                SYMBOLIC(__NR_pselect6)
+#define __NR_sched_yield             SYMBOLIC(__NR_sched_yield)
+#define __NR_mremap                  SYMBOLIC(__NR_mremap)
+#define __NR_mincore                 SYMBOLIC(__NR_mincore)
+#define __NR_madvise                 SYMBOLIC(__NR_madvise)
+#define __NR_shmget                  SYMBOLIC(__NR_shmget)
+#define __NR_shmat                   SYMBOLIC(__NR_shmat)
+#define __NR_shmctl                  SYMBOLIC(__NR_shmctl)
+#define __NR_dup                     SYMBOLIC(__NR_dup)
+#define __NR_dup2                    SYMBOLIC(__NR_dup2)
+#define __NR_pause                   SYMBOLIC(__NR_pause)
+#define __NR_nanosleep               SYMBOLIC(__NR_nanosleep)
+#define __NR_getitimer               SYMBOLIC(__NR_getitimer)
+#define __NR_setitimer               SYMBOLIC(__NR_setitimer)
+#define __NR_alarm                   SYMBOLIC(__NR_alarm)
+#define __NR_getpid                  SYMBOLIC(__NR_getpid)
+#define __NR_sendfile                SYMBOLIC(__NR_sendfile)
+#define __NR_socket                  SYMBOLIC(__NR_socket)
+#define __NR_connect                 SYMBOLIC(__NR_connect)
+#define __NR_accept                  SYMBOLIC(__NR_accept)
+#define __NR_sendto                  SYMBOLIC(__NR_sendto)
+#define __NR_recvfrom                SYMBOLIC(__NR_recvfrom)
+#define __NR_sendmsg                 SYMBOLIC(__NR_sendmsg)
+#define __NR_recvmsg                 SYMBOLIC(__NR_recvmsg)
+#define __NR_shutdown                SYMBOLIC(__NR_shutdown)
+#define __NR_bind                    SYMBOLIC(__NR_bind)
+#define __NR_listen                  SYMBOLIC(__NR_listen)
+#define __NR_getsockname             SYMBOLIC(__NR_getsockname)
+#define __NR_getpeername             SYMBOLIC(__NR_getpeername)
+#define __NR_socketpair              SYMBOLIC(__NR_socketpair)
+#define __NR_setsockopt              SYMBOLIC(__NR_setsockopt)
+#define __NR_getsockopt              SYMBOLIC(__NR_getsockopt)
+#define __NR_fork                    SYMBOLIC(__NR_fork)
+#define __NR_vfork                   SYMBOLIC(__NR_vfork)
+#define __NR_posix_spawn             SYMBOLIC(__NR_posix_spawn)
+#define __NR_execve                  SYMBOLIC(__NR_execve)
+#define __NR_wait4                   SYMBOLIC(__NR_wait4)
+#define __NR_kill                    SYMBOLIC(__NR_kill)
+#define __NR_killpg                  SYMBOLIC(__NR_killpg)
+#define __NR_clone                   SYMBOLIC(__NR_clone)
+#define __NR_tkill                   SYMBOLIC(__NR_tkill)
+#define __NR_futex                   SYMBOLIC(__NR_futex)
+#define __NR_set_robust_list         SYMBOLIC(__NR_set_robust_list)
+#define __NR_get_robust_list         SYMBOLIC(__NR_get_robust_list)
+#define __NR_uname                   SYMBOLIC(__NR_uname)
+#define __NR_semget                  SYMBOLIC(__NR_semget)
+#define __NR_semop                   SYMBOLIC(__NR_semop)
+#define __NR_semctl                  SYMBOLIC(__NR_semctl)
+#define __NR_shmdt                   SYMBOLIC(__NR_shmdt)
+#define __NR_msgget                  SYMBOLIC(__NR_msgget)
+#define __NR_msgsnd                  SYMBOLIC(__NR_msgsnd)
+#define __NR_msgrcv                  SYMBOLIC(__NR_msgrcv)
+#define __NR_msgctl                  SYMBOLIC(__NR_msgctl)
+#define __NR_fcntl                   SYMBOLIC(__NR_fcntl)
+#define __NR_flock                   SYMBOLIC(__NR_flock)
+#define __NR_fsync                   SYMBOLIC(__NR_fsync)
+#define __NR_fdatasync               SYMBOLIC(__NR_fdatasync)
+#define __NR_truncate                SYMBOLIC(__NR_truncate)
+#define __NR_ftruncate               SYMBOLIC(__NR_ftruncate)
+#define __NR_getcwd                  SYMBOLIC(__NR_getcwd)
+#define __NR_chdir                   SYMBOLIC(__NR_chdir)
+#define __NR_fchdir                  SYMBOLIC(__NR_fchdir)
+#define __NR_rename                  SYMBOLIC(__NR_rename)
+#define __NR_mkdir                   SYMBOLIC(__NR_mkdir)
+#define __NR_rmdir                   SYMBOLIC(__NR_rmdir)
+#define __NR_creat                   SYMBOLIC(__NR_creat)
+#define __NR_link                    SYMBOLIC(__NR_link)
+#define __NR_unlink                  SYMBOLIC(__NR_unlink)
+#define __NR_symlink                 SYMBOLIC(__NR_symlink)
+#define __NR_readlink                SYMBOLIC(__NR_readlink)
+#define __NR_chmod                   SYMBOLIC(__NR_chmod)
+#define __NR_fchmod                  SYMBOLIC(__NR_fchmod)
+#define __NR_chown                   SYMBOLIC(__NR_chown)
+#define __NR_fchown                  SYMBOLIC(__NR_fchown)
+#define __NR_lchown                  SYMBOLIC(__NR_lchown)
+#define __NR_umask                   SYMBOLIC(__NR_umask)
+#define __NR_gettimeofday            SYMBOLIC(__NR_gettimeofday)
+#define __NR_getrlimit               SYMBOLIC(__NR_getrlimit)
+#define __NR_getrusage               SYMBOLIC(__NR_getrusage)
+#define __NR_sysinfo                 SYMBOLIC(__NR_sysinfo)
+#define __NR_times                   SYMBOLIC(__NR_times)
+#define __NR_ptrace                  SYMBOLIC(__NR_ptrace)
+#define __NR_syslog                  SYMBOLIC(__NR_syslog)
+#define __NR_getuid                  SYMBOLIC(__NR_getuid)
+#define __NR_getgid                  SYMBOLIC(__NR_getgid)
+#define __NR_getppid                 SYMBOLIC(__NR_getppid)
+#define __NR_getpgrp                 SYMBOLIC(__NR_getpgrp)
+#define __NR_setsid                  SYMBOLIC(__NR_setsid)
+#define __NR_getsid                  SYMBOLIC(__NR_getsid)
+#define __NR_getpgid                 SYMBOLIC(__NR_getpgid)
+#define __NR_setpgid                 SYMBOLIC(__NR_setpgid)
+#define __NR_geteuid                 SYMBOLIC(__NR_geteuid)
+#define __NR_getegid                 SYMBOLIC(__NR_getegid)
+#define __NR_getgroups               SYMBOLIC(__NR_getgroups)
+#define __NR_setgroups               SYMBOLIC(__NR_setgroups)
+#define __NR_setreuid                SYMBOLIC(__NR_setreuid)
+#define __NR_setregid                SYMBOLIC(__NR_setregid)
+#define __NR_setuid                  SYMBOLIC(__NR_setuid)
+#define __NR_setgid                  SYMBOLIC(__NR_setgid)
+#define __NR_setresuid               SYMBOLIC(__NR_setresuid)
+#define __NR_setresgid               SYMBOLIC(__NR_setresgid)
+#define __NR_getresuid               SYMBOLIC(__NR_getresuid)
+#define __NR_getresgid               SYMBOLIC(__NR_getresgid)
+#define __NR_sigpending              SYMBOLIC(__NR_sigpending)
+#define __NR_sigsuspend              SYMBOLIC(__NR_sigsuspend)
+#define __NR_sigaltstack             SYMBOLIC(__NR_sigaltstack)
+#define __NR_mknod                   SYMBOLIC(__NR_mknod)
+#define __NR_mknodat                 SYMBOLIC(__NR_mknodat)
+#define __NR_mkfifo                  SYMBOLIC(__NR_mkfifo)
+#define __NR_mkfifoat                SYMBOLIC(__NR_mkfifoat)
+#define __NR_statfs                  SYMBOLIC(__NR_statfs)
+#define __NR_fstatfs                 SYMBOLIC(__NR_fstatfs)
+#define __NR_getpriority             SYMBOLIC(__NR_getpriority)
+#define __NR_setpriority             SYMBOLIC(__NR_setpriority)
+#define __NR_mlock                   SYMBOLIC(__NR_mlock)
+#define __NR_munlock                 SYMBOLIC(__NR_munlock)
+#define __NR_mlockall                SYMBOLIC(__NR_mlockall)
+#define __NR_munlockall              SYMBOLIC(__NR_munlockall)
+#define __NR_setrlimit               SYMBOLIC(__NR_setrlimit)
+#define __NR_chroot                  SYMBOLIC(__NR_chroot)
+#define __NR_sync                    SYMBOLIC(__NR_sync)
+#define __NR_acct                    SYMBOLIC(__NR_acct)
+#define __NR_settimeofday            SYMBOLIC(__NR_settimeofday)
+#define __NR_mount                   SYMBOLIC(__NR_mount)
+#define __NR_reboot                  SYMBOLIC(__NR_reboot)
+#define __NR_quotactl                SYMBOLIC(__NR_quotactl)
+#define __NR_setfsuid                SYMBOLIC(__NR_setfsuid)
+#define __NR_setfsgid                SYMBOLIC(__NR_setfsgid)
+#define __NR_capget                  SYMBOLIC(__NR_capget)
+#define __NR_capset                  SYMBOLIC(__NR_capset)
+#define __NR_sigtimedwait            SYMBOLIC(__NR_sigtimedwait)
+#define __NR_rt_sigqueueinfo         SYMBOLIC(__NR_rt_sigqueueinfo)
+#define __NR_personality             SYMBOLIC(__NR_personality)
+#define __NR_ustat                   SYMBOLIC(__NR_ustat)
+#define __NR_sysfs                   SYMBOLIC(__NR_sysfs)
+#define __NR_sched_setparam          SYMBOLIC(__NR_sched_setparam)
+#define __NR_sched_getparam          SYMBOLIC(__NR_sched_getparam)
+#define __NR_sched_setscheduler      SYMBOLIC(__NR_sched_setscheduler)
+#define __NR_sched_getscheduler      SYMBOLIC(__NR_sched_getscheduler)
+#define __NR_sched_get_priority_max  SYMBOLIC(__NR_sched_get_priority_max)
+#define __NR_sched_get_priority_min  SYMBOLIC(__NR_sched_get_priority_min)
+#define __NR_sched_rr_get_interval   SYMBOLIC(__NR_sched_rr_get_interval)
+#define __NR_vhangup                 SYMBOLIC(__NR_vhangup)
+#define __NR_modify_ldt              SYMBOLIC(__NR_modify_ldt)
+#define __NR_pivot_root              SYMBOLIC(__NR_pivot_root)
+#define __NR__sysctl                 SYMBOLIC(__NR__sysctl)
+#define __NR_prctl                   SYMBOLIC(__NR_prctl)
+#define __NR_arch_prctl              SYMBOLIC(__NR_arch_prctl)
+#define __NR_adjtimex                SYMBOLIC(__NR_adjtimex)
+#define __NR_umount2                 SYMBOLIC(__NR_umount2)
+#define __NR_swapon                  SYMBOLIC(__NR_swapon)
+#define __NR_swapoff                 SYMBOLIC(__NR_swapoff)
+#define __NR_sethostname             SYMBOLIC(__NR_sethostname)
+#define __NR_setdomainname           SYMBOLIC(__NR_setdomainname)
+#define __NR_iopl                    SYMBOLIC(__NR_iopl)
+#define __NR_ioperm                  SYMBOLIC(__NR_ioperm)
+#define __NR_init_module             SYMBOLIC(__NR_init_module)
+#define __NR_delete_module           SYMBOLIC(__NR_delete_module)
+#define __NR_gettid                  SYMBOLIC(__NR_gettid)
+#define __NR_readahead               SYMBOLIC(__NR_readahead)
+#define __NR_setxattr                SYMBOLIC(__NR_setxattr)
+#define __NR_fsetxattr               SYMBOLIC(__NR_fsetxattr)
+#define __NR_getxattr                SYMBOLIC(__NR_getxattr)
+#define __NR_fgetxattr               SYMBOLIC(__NR_fgetxattr)
+#define __NR_listxattr               SYMBOLIC(__NR_listxattr)
+#define __NR_flistxattr              SYMBOLIC(__NR_flistxattr)
+#define __NR_removexattr             SYMBOLIC(__NR_removexattr)
+#define __NR_fremovexattr            SYMBOLIC(__NR_fremovexattr)
+#define __NR_lsetxattr               SYMBOLIC(__NR_lsetxattr)
+#define __NR_lgetxattr               SYMBOLIC(__NR_lgetxattr)
+#define __NR_llistxattr              SYMBOLIC(__NR_llistxattr)
+#define __NR_lremovexattr            SYMBOLIC(__NR_lremovexattr)
+#define __NR_sched_setaffinity       SYMBOLIC(__NR_sched_setaffinity)
+#define __NR_sched_getaffinity       SYMBOLIC(__NR_sched_getaffinity)
+#define __NR_cpuset_getaffinity      SYMBOLIC(__NR_cpuset_getaffinity)
+#define __NR_cpuset_setaffinity      SYMBOLIC(__NR_cpuset_setaffinity)
+#define __NR_io_setup                SYMBOLIC(__NR_io_setup)
+#define __NR_io_destroy              SYMBOLIC(__NR_io_destroy)
+#define __NR_io_getevents            SYMBOLIC(__NR_io_getevents)
+#define __NR_io_submit               SYMBOLIC(__NR_io_submit)
+#define __NR_io_cancel               SYMBOLIC(__NR_io_cancel)
+#define __NR_lookup_dcookie          SYMBOLIC(__NR_lookup_dcookie)
+#define __NR_epoll_create            SYMBOLIC(__NR_epoll_create)
+#define __NR_epoll_wait              SYMBOLIC(__NR_epoll_wait)
+#define __NR_epoll_ctl               SYMBOLIC(__NR_epoll_ctl)
+#define __NR_getdents                SYMBOLIC(__NR_getdents)
+#define __NR_set_tid_address         SYMBOLIC(__NR_set_tid_address)
+#define __NR_restart_syscall         SYMBOLIC(__NR_restart_syscall)
+#define __NR_semtimedop              SYMBOLIC(__NR_semtimedop)
+#define __NR_fadvise                 SYMBOLIC(__NR_fadvise)
+#define __NR_timer_create            SYMBOLIC(__NR_timer_create)
+#define __NR_timer_settime           SYMBOLIC(__NR_timer_settime)
+#define __NR_timer_gettime           SYMBOLIC(__NR_timer_gettime)
+#define __NR_timer_getoverrun        SYMBOLIC(__NR_timer_getoverrun)
+#define __NR_timer_delete            SYMBOLIC(__NR_timer_delete)
+#define __NR_clock_settime           SYMBOLIC(__NR_clock_settime)
+#define __NR_clock_gettime           SYMBOLIC(__NR_clock_gettime)
+#define __NR_clock_getres            SYMBOLIC(__NR_clock_getres)
+#define __NR_clock_nanosleep         SYMBOLIC(__NR_clock_nanosleep)
+#define __NR_tgkill                  SYMBOLIC(__NR_tgkill)
+#define __NR_mbind                   SYMBOLIC(__NR_mbind)
+#define __NR_set_mempolicy           SYMBOLIC(__NR_set_mempolicy)
+#define __NR_get_mempolicy           SYMBOLIC(__NR_get_mempolicy)
+#define __NR_mq_open                 SYMBOLIC(__NR_mq_open)
+#define __NR_mq_unlink               SYMBOLIC(__NR_mq_unlink)
+#define __NR_mq_timedsend            SYMBOLIC(__NR_mq_timedsend)
+#define __NR_mq_timedreceive         SYMBOLIC(__NR_mq_timedreceive)
+#define __NR_mq_notify               SYMBOLIC(__NR_mq_notify)
+#define __NR_mq_getsetattr           SYMBOLIC(__NR_mq_getsetattr)
+#define __NR_kexec_load              SYMBOLIC(__NR_kexec_load)
+#define __NR_waitid                  SYMBOLIC(__NR_waitid)
+#define __NR_add_key                 SYMBOLIC(__NR_add_key)
+#define __NR_request_key             SYMBOLIC(__NR_request_key)
+#define __NR_keyctl                  SYMBOLIC(__NR_keyctl)
+#define __NR_ioprio_set              SYMBOLIC(__NR_ioprio_set)
+#define __NR_ioprio_get              SYMBOLIC(__NR_ioprio_get)
+#define __NR_inotify_init            SYMBOLIC(__NR_inotify_init)
+#define __NR_inotify_add_watch       SYMBOLIC(__NR_inotify_add_watch)
+#define __NR_inotify_rm_watch        SYMBOLIC(__NR_inotify_rm_watch)
+#define __NR_openat                  SYMBOLIC(__NR_openat)
+#define __NR_mkdirat                 SYMBOLIC(__NR_mkdirat)
+#define __NR_fchownat                SYMBOLIC(__NR_fchownat)
+#define __NR_utime                   SYMBOLIC(__NR_utime)
+#define __NR_utimes                  SYMBOLIC(__NR_utimes)
+#define __NR_futimesat               SYMBOLIC(__NR_futimesat)
+#define __NR_futimes                 SYMBOLIC(__NR_futimes)
+#define __NR_futimens                SYMBOLIC(__NR_futimens)
+#define __NR_fstatat                 SYMBOLIC(__NR_fstatat)
+#define __NR_unlinkat                SYMBOLIC(__NR_unlinkat)
+#define __NR_renameat                SYMBOLIC(__NR_renameat)
+#define __NR_linkat                  SYMBOLIC(__NR_linkat)
+#define __NR_symlinkat               SYMBOLIC(__NR_symlinkat)
+#define __NR_readlinkat              SYMBOLIC(__NR_readlinkat)
+#define __NR_fchmodat                SYMBOLIC(__NR_fchmodat)
+#define __NR_faccessat               SYMBOLIC(__NR_faccessat)
+#define __NR_unshare                 SYMBOLIC(__NR_unshare)
+#define __NR_splice                  SYMBOLIC(__NR_splice)
+#define __NR_tee                     SYMBOLIC(__NR_tee)
+#define __NR_sync_file_range         SYMBOLIC(__NR_sync_file_range)
+#define __NR_vmsplice                SYMBOLIC(__NR_vmsplice)
+#define __NR_migrate_pages           SYMBOLIC(__NR_migrate_pages)
+#define __NR_move_pages              SYMBOLIC(__NR_move_pages)
+#define __NR_preadv                  SYMBOLIC(__NR_preadv)
+#define __NR_pwritev                 SYMBOLIC(__NR_pwritev)
+#define __NR_utimensat               SYMBOLIC(__NR_utimensat)
+#define __NR_fallocate               SYMBOLIC(__NR_fallocate)
+#define __NR_posix_fallocate         SYMBOLIC(__NR_posix_fallocate)
+#define __NR_accept4                 SYMBOLIC(__NR_accept4)
+#define __NR_dup3                    SYMBOLIC(__NR_dup3)
+#define __NR_pipe2                   SYMBOLIC(__NR_pipe2)
+#define __NR_epoll_pwait             SYMBOLIC(__NR_epoll_pwait)
+#define __NR_epoll_create1           SYMBOLIC(__NR_epoll_create1)
+#define __NR_perf_event_open         SYMBOLIC(__NR_perf_event_open)
+#define __NR_inotify_init1           SYMBOLIC(__NR_inotify_init1)
+#define __NR_rt_tgsigqueueinfo       SYMBOLIC(__NR_rt_tgsigqueueinfo)
+#define __NR_signalfd                SYMBOLIC(__NR_signalfd)
+#define __NR_signalfd4               SYMBOLIC(__NR_signalfd4)
+#define __NR_eventfd                 SYMBOLIC(__NR_eventfd)
+#define __NR_eventfd2                SYMBOLIC(__NR_eventfd2)
+#define __NR_timerfd_create          SYMBOLIC(__NR_timerfd_create)
+#define __NR_timerfd_settime         SYMBOLIC(__NR_timerfd_settime)
+#define __NR_timerfd_gettime         SYMBOLIC(__NR_timerfd_gettime)
+#define __NR_recvmmsg                SYMBOLIC(__NR_recvmmsg)
+#define __NR_fanotify_init           SYMBOLIC(__NR_fanotify_init)
+#define __NR_fanotify_mark           SYMBOLIC(__NR_fanotify_mark)
+#define __NR_prlimit                 SYMBOLIC(__NR_prlimit)
+#define __NR_name_to_handle_at       SYMBOLIC(__NR_name_to_handle_at)
+#define __NR_open_by_handle_at       SYMBOLIC(__NR_open_by_handle_at)
+#define __NR_clock_adjtime           SYMBOLIC(__NR_clock_adjtime)
+#define __NR_syncfs                  SYMBOLIC(__NR_syncfs)
+#define __NR_sendmmsg                SYMBOLIC(__NR_sendmmsg)
+#define __NR_setns                   SYMBOLIC(__NR_setns)
+#define __NR_getcpu                  SYMBOLIC(__NR_getcpu)
+#define __NR_process_vm_readv        SYMBOLIC(__NR_process_vm_readv)
+#define __NR_process_vm_writev       SYMBOLIC(__NR_process_vm_writev)
+#define __NR_kcmp                    SYMBOLIC(__NR_kcmp)
+#define __NR_finit_module            SYMBOLIC(__NR_finit_module)
+#define __NR_sched_setattr           SYMBOLIC(__NR_sched_setattr)
+#define __NR_sched_getattr           SYMBOLIC(__NR_sched_getattr)
+#define __NR_renameat2               SYMBOLIC(__NR_renameat2)
+#define __NR_seccomp                 SYMBOLIC(__NR_seccomp)
+#define __NR_getrandom               SYMBOLIC(__NR_getrandom)
+#define __NR_memfd_create            SYMBOLIC(__NR_memfd_create)
+#define __NR_kexec_file_load         SYMBOLIC(__NR_kexec_file_load)
+#define __NR_bpf                     SYMBOLIC(__NR_bpf)
+#define __NR_execveat                SYMBOLIC(__NR_execveat)
+#define __NR_userfaultfd             SYMBOLIC(__NR_userfaultfd)
+#define __NR_membarrier              SYMBOLIC(__NR_membarrier)
+#define __NR_mlock2                  SYMBOLIC(__NR_mlock2)
+#define __NR_copy_file_range         SYMBOLIC(__NR_copy_file_range)
+#define __NR_preadv2                 SYMBOLIC(__NR_preadv2)
+#define __NR_pwritev2                SYMBOLIC(__NR_pwritev2)
+#define __NR_pkey_mprotect           SYMBOLIC(__NR_pkey_mprotect)
+#define __NR_pkey_alloc              SYMBOLIC(__NR_pkey_alloc)
+#define __NR_pkey_free               SYMBOLIC(__NR_pkey_free)
+#define __NR_statx                   SYMBOLIC(__NR_statx)
+#define __NR_io_pgetevents           SYMBOLIC(__NR_io_pgetevents)
+#define __NR_rseq                    SYMBOLIC(__NR_rseq)
+#define __NR_pidfd_send_signal       SYMBOLIC(__NR_pidfd_send_signal)
+#define __NR_io_uring_setup          SYMBOLIC(__NR_io_uring_setup)
+#define __NR_io_uring_enter          SYMBOLIC(__NR_io_uring_enter)
+#define __NR_io_uring_register       SYMBOLIC(__NR_io_uring_register)
+#define __NR_pledge                  SYMBOLIC(__NR_pledge)
+#define __NR_msyscall                SYMBOLIC(__NR_msyscall)
+#define __NR_ktrace                  SYMBOLIC(__NR_ktrace)
+#define __NR_kqueue                  SYMBOLIC(__NR_kqueue)
+#define __NR_kevent                  SYMBOLIC(__NR_kevent)
+#define __NR_revoke                  SYMBOLIC(__NR_revoke)
+#define __NR_setlogin                SYMBOLIC(__NR_setlogin)
+#define __NR_getfh                   SYMBOLIC(__NR_getfh)
+#define __NR_chflags                 SYMBOLIC(__NR_chflags)
+#define __NR_getfsstat               SYMBOLIC(__NR_getfsstat)
+#define __NR_nfssvc                  SYMBOLIC(__NR_nfssvc)
+#define __NR_adjtime                 SYMBOLIC(__NR_adjtime)
+#define __NR_fchflags                SYMBOLIC(__NR_fchflags)
+#define __NR_seteuid                 SYMBOLIC(__NR_seteuid)
+#define __NR_setegid                 SYMBOLIC(__NR_setegid)
+#define __NR_fpathconf               SYMBOLIC(__NR_fpathconf)
+#define __NR_fhopen                  SYMBOLIC(__NR_fhopen)
+#define __NR_unmount                 SYMBOLIC(__NR_unmount)
+#define __NR_issetugid               SYMBOLIC(__NR_issetugid)
+#define __NR_minherit                SYMBOLIC(__NR_minherit)
+#define __NR_pathconf                SYMBOLIC(__NR_pathconf)
+#define __NR_sysctl                  SYMBOLIC(__NR_sysctl)
+#define __NR_ntp_adjtime             SYMBOLIC(__NR_ntp_adjtime)
+#define __NR_ntp_gettime             SYMBOLIC(__NR_ntp_gettime)
+#define __NR_shm_unlink              SYMBOLIC(__NR_shm_unlink)
+#define __NR_shm_open                SYMBOLIC(__NR_shm_open)
+#define __NR_aio_read                SYMBOLIC(__NR_aio_read)
+#define __NR_aio_suspend             SYMBOLIC(__NR_aio_suspend)
+#define __NR_aio_cancel              SYMBOLIC(__NR_aio_cancel)
+#define __NR_aio_fsync               SYMBOLIC(__NR_aio_fsync)
+#define __NR_aio_error               SYMBOLIC(__NR_aio_error)
+#define __NR_aio_return              SYMBOLIC(__NR_aio_return)
+#define __NR_aio_write               SYMBOLIC(__NR_aio_write)
+#define __NR_aio_waitcomplete        SYMBOLIC(__NR_aio_waitcomplete)
+#define __NR_aio_suspend_nocancel    SYMBOLIC(__NR_aio_suspend_nocancel)
+#define __NR_aio_mlock               SYMBOLIC(__NR_aio_mlock)
+#define __NR_sigwait                 SYMBOLIC(__NR_sigwait)
+#define __NR_undelete                SYMBOLIC(__NR_undelete)
+#define __NR_getlogin                SYMBOLIC(__NR_getlogin)
+#define __NR_getdtablesize           SYMBOLIC(__NR_getdtablesize)
+#define __NR_setauid                 SYMBOLIC(__NR_setauid)
+#define __NR_audit                   SYMBOLIC(__NR_audit)
+#define __NR_auditctl                SYMBOLIC(__NR_auditctl)
+#define __NR_getaudit_addr           SYMBOLIC(__NR_getaudit_addr)
+#define __NR_getdirentries           SYMBOLIC(__NR_getdirentries)
+#define __NR_lio_listio              SYMBOLIC(__NR_lio_listio)
+#define __NR_setaudit_addr           SYMBOLIC(__NR_setaudit_addr)
+#define __NR_getauid                 SYMBOLIC(__NR_getauid)
+#define __NR_semsys                  SYMBOLIC(__NR_semsys)
+#define __NR_auditon                 SYMBOLIC(__NR_auditon)
+#define __NR_msgsys                  SYMBOLIC(__NR_msgsys)
+#define __NR_shmsys                  SYMBOLIC(__NR_shmsys)
+#define __NR_fhstat                  SYMBOLIC(__NR_fhstat)
+#define __NR_chflagsat               SYMBOLIC(__NR_chflagsat)
+#define __NR_profil                  SYMBOLIC(__NR_profil)
+#define __NR_fhstatfs                SYMBOLIC(__NR_fhstatfs)
+#define __NR_utrace                  SYMBOLIC(__NR_utrace)
+#define __NR_closefrom               SYMBOLIC(__NR_closefrom)
+#define __NR_pthread_markcancel      SYMBOLIC(__NR_pthread_markcancel)
+#define __NR_pthread_kill            SYMBOLIC(__NR_pthread_kill)
+#define __NR_pthread_fchdir          SYMBOLIC(__NR_pthread_fchdir)
+#define __NR_pthread_sigmask         SYMBOLIC(__NR_pthread_sigmask)
+#define __NR_pthread_chdir           SYMBOLIC(__NR_pthread_chdir)
+#define __NR_pthread_canceled        SYMBOLIC(__NR_pthread_canceled)
+#define __NR_disable_threadsignal    SYMBOLIC(__NR_disable_threadsignal)
+#define __NR_abort_with_payload      SYMBOLIC(__NR_abort_with_payload)
+#define __NR_accept_nocancel         SYMBOLIC(__NR_accept_nocancel)
+#define __NR_access_extended         SYMBOLIC(__NR_access_extended)
+#define __NR_audit_session_join      SYMBOLIC(__NR_audit_session_join)
+#define __NR_audit_session_port      SYMBOLIC(__NR_audit_session_port)
+#define __NR_audit_session_self      SYMBOLIC(__NR_audit_session_self)
+#define __NR_bsdthread_create        SYMBOLIC(__NR_bsdthread_create)
+#define __NR_bsdthread_ctl           SYMBOLIC(__NR_bsdthread_ctl)
+#define __NR_bsdthread_register      SYMBOLIC(__NR_bsdthread_register)
+#define __NR_bsdthread_terminate     SYMBOLIC(__NR_bsdthread_terminate)
+#define __NR_change_fdguard_np       SYMBOLIC(__NR_change_fdguard_np)
+#define __NR_chmod_extended          SYMBOLIC(__NR_chmod_extended)
+#define __NR_clonefileat             SYMBOLIC(__NR_clonefileat)
+#define __NR_close_nocancel          SYMBOLIC(__NR_close_nocancel)
+#define __NR_coalition               SYMBOLIC(__NR_coalition)
+#define __NR_coalition_info          SYMBOLIC(__NR_coalition_info)
+#define __NR_connect_nocancel        SYMBOLIC(__NR_connect_nocancel)
+#define __NR_connectx                SYMBOLIC(__NR_connectx)
+#define __NR_copyfile                SYMBOLIC(__NR_copyfile)
+#define __NR_csops                   SYMBOLIC(__NR_csops)
+#define __NR_csops_audittoken        SYMBOLIC(__NR_csops_audittoken)
+#define __NR_csrctl                  SYMBOLIC(__NR_csrctl)
+#define __NR_delete                  SYMBOLIC(__NR_delete)
+#define __NR_disconnectx             SYMBOLIC(__NR_disconnectx)
+#define __NR_exchangedata            SYMBOLIC(__NR_exchangedata)
+#define __NR_fchmod_extended         SYMBOLIC(__NR_fchmod_extended)
+#define __NR_fclonefileat            SYMBOLIC(__NR_fclonefileat)
+#define __NR_fcntl_nocancel          SYMBOLIC(__NR_fcntl_nocancel)
+#define __NR_ffsctl                  SYMBOLIC(__NR_ffsctl)
+#define __NR_fgetattrlist            SYMBOLIC(__NR_fgetattrlist)
+#define __NR_fileport_makefd         SYMBOLIC(__NR_fileport_makefd)
+#define __NR_fileport_makeport       SYMBOLIC(__NR_fileport_makeport)
+#define __NR_fmount                  SYMBOLIC(__NR_fmount)
+#define __NR_fs_snapshot             SYMBOLIC(__NR_fs_snapshot)
+#define __NR_fsctl                   SYMBOLIC(__NR_fsctl)
+#define __NR_fsetattrlist            SYMBOLIC(__NR_fsetattrlist)
+#define __NR_fstat_extended          SYMBOLIC(__NR_fstat_extended)
+#define __NR_fsync_nocancel          SYMBOLIC(__NR_fsync_nocancel)
+#define __NR_getattrlist             SYMBOLIC(__NR_getattrlist)
+#define __NR_getattrlistat           SYMBOLIC(__NR_getattrlistat)
+#define __NR_getattrlistbulk         SYMBOLIC(__NR_getattrlistbulk)
+#define __NR_getdirentriesattr       SYMBOLIC(__NR_getdirentriesattr)
+#define __NR_gethostuuid             SYMBOLIC(__NR_gethostuuid)
+#define __NR_getsgroups              SYMBOLIC(__NR_getsgroups)
+#define __NR_getwgroups              SYMBOLIC(__NR_getwgroups)
+#define __NR_grab_pgo_data           SYMBOLIC(__NR_grab_pgo_data)
+#define __NR_guarded_close_np        SYMBOLIC(__NR_guarded_close_np)
+#define __NR_guarded_kqueue_np       SYMBOLIC(__NR_guarded_kqueue_np)
+#define __NR_guarded_open_np         SYMBOLIC(__NR_guarded_open_np)
+#define __NR_guarded_pwrite_np       SYMBOLIC(__NR_guarded_pwrite_np)
+#define __NR_guarded_write_np        SYMBOLIC(__NR_guarded_write_np)
+#define __NR_guarded_writev_np       SYMBOLIC(__NR_guarded_writev_np)
+#define __NR_identitysvc             SYMBOLIC(__NR_identitysvc)
+#define __NR_initgroups              SYMBOLIC(__NR_initgroups)
+#define __NR_iopolicysys             SYMBOLIC(__NR_iopolicysys)
+#define __NR_kas_info                SYMBOLIC(__NR_kas_info)
+#define __NR_kdebug_trace            SYMBOLIC(__NR_kdebug_trace)
+#define __NR_kdebug_trace_string     SYMBOLIC(__NR_kdebug_trace_string)
+#define __NR_kdebug_typefilter       SYMBOLIC(__NR_kdebug_typefilter)
+#define __NR_kevent_id               SYMBOLIC(__NR_kevent_id)
+#define __NR_kevent_qos              SYMBOLIC(__NR_kevent_qos)
+#define __NR_ledger                  SYMBOLIC(__NR_ledger)
+#define __NR_lstat_extended          SYMBOLIC(__NR_lstat_extended)
+#define __NR_memorystatus_control    SYMBOLIC(__NR_memorystatus_control)
+#define __NR_memorystatus_get_level  SYMBOLIC(__NR_memorystatus_get_level)
+#define __NR_microstackshot          SYMBOLIC(__NR_microstackshot)
+#define __NR_mkdir_extended          SYMBOLIC(__NR_mkdir_extended)
+#define __NR_mkfifo_extended         SYMBOLIC(__NR_mkfifo_extended)
+#define __NR_modwatch                SYMBOLIC(__NR_modwatch)
+#define __NR_mremap_encrypted        SYMBOLIC(__NR_mremap_encrypted)
+#define __NR_msgrcv_nocancel         SYMBOLIC(__NR_msgrcv_nocancel)
+#define __NR_msgsnd_nocancel         SYMBOLIC(__NR_msgsnd_nocancel)
+#define __NR_msync_nocancel          SYMBOLIC(__NR_msync_nocancel)
+#define __NR_necp_client_action      SYMBOLIC(__NR_necp_client_action)
+#define __NR_necp_match_policy       SYMBOLIC(__NR_necp_match_policy)
+#define __NR_necp_open               SYMBOLIC(__NR_necp_open)
+#define __NR_necp_session_action     SYMBOLIC(__NR_necp_session_action)
+#define __NR_necp_session_open       SYMBOLIC(__NR_necp_session_open)
+#define __NR_net_qos_guideline       SYMBOLIC(__NR_net_qos_guideline)
+#define __NR_netagent_trigger        SYMBOLIC(__NR_netagent_trigger)
+#define __NR_nfsclnt                 SYMBOLIC(__NR_nfsclnt)
+#define __NR_open_dprotected_np      SYMBOLIC(__NR_open_dprotected_np)
+#define __NR_open_extended           SYMBOLIC(__NR_open_extended)
+#define __NR_open_nocancel           SYMBOLIC(__NR_open_nocancel)
+#define __NR_openat_nocancel         SYMBOLIC(__NR_openat_nocancel)
+#define __NR_openbyid_np             SYMBOLIC(__NR_openbyid_np)
+#define __NR_os_fault_with_payload   SYMBOLIC(__NR_os_fault_with_payload)
+#define __NR_peeloff                 SYMBOLIC(__NR_peeloff)
+#define __NR_persona                 SYMBOLIC(__NR_persona)
+#define __NR_pid_hibernate           SYMBOLIC(__NR_pid_hibernate)
+#define __NR_pid_resume              SYMBOLIC(__NR_pid_resume)
+#define __NR_pid_shutdown_sockets    SYMBOLIC(__NR_pid_shutdown_sockets)
+#define __NR_pid_suspend             SYMBOLIC(__NR_pid_suspend)
+#define __NR_poll_nocancel           SYMBOLIC(__NR_poll_nocancel)
+#define __NR_pread_nocancel          SYMBOLIC(__NR_pread_nocancel)
+#define __NR_proc_info               SYMBOLIC(__NR_proc_info)
+#define __NR_proc_rlimit_control     SYMBOLIC(__NR_proc_rlimit_control)
+#define __NR_proc_trace_log          SYMBOLIC(__NR_proc_trace_log)
+#define __NR_proc_uuid_policy        SYMBOLIC(__NR_proc_uuid_policy)
+#define __NR_process_policy          SYMBOLIC(__NR_process_policy)
+#define __NR_pselect_nocancel        SYMBOLIC(__NR_pselect_nocancel)
+#define __NR_psynch_cvbroad          SYMBOLIC(__NR_psynch_cvbroad)
+#define __NR_psynch_cvclrprepost     SYMBOLIC(__NR_psynch_cvclrprepost)
+#define __NR_psynch_cvsignal         SYMBOLIC(__NR_psynch_cvsignal)
+#define __NR_psynch_mutexdrop        SYMBOLIC(__NR_psynch_mutexdrop)
+#define __NR_psynch_mutexwait        SYMBOLIC(__NR_psynch_mutexwait)
+#define __NR_psynch_rw_downgrade     SYMBOLIC(__NR_psynch_rw_downgrade)
+#define __NR_psynch_rw_longrdlock    SYMBOLIC(__NR_psynch_rw_longrdlock)
+#define __NR_psynch_rw_rdlock        SYMBOLIC(__NR_psynch_rw_rdlock)
+#define __NR_psynch_rw_unlock        SYMBOLIC(__NR_psynch_rw_unlock)
+#define __NR_psynch_rw_unlock2       SYMBOLIC(__NR_psynch_rw_unlock2)
+#define __NR_psynch_rw_upgrade       SYMBOLIC(__NR_psynch_rw_upgrade)
+#define __NR_psynch_rw_wrlock        SYMBOLIC(__NR_psynch_rw_wrlock)
+#define __NR_psynch_rw_yieldwrlock   SYMBOLIC(__NR_psynch_rw_yieldwrlock)
+#define __NR_pwrite_nocancel         SYMBOLIC(__NR_pwrite_nocancel)
+#define __NR_read_nocancel           SYMBOLIC(__NR_read_nocancel)
+#define __NR_readv_nocancel          SYMBOLIC(__NR_readv_nocancel)
+#define __NR_recvfrom_nocancel       SYMBOLIC(__NR_recvfrom_nocancel)
+#define __NR_recvmsg_nocancel        SYMBOLIC(__NR_recvmsg_nocancel)
+#define __NR_recvmsg_x               SYMBOLIC(__NR_recvmsg_x)
+#define __NR_renameatx_np            SYMBOLIC(__NR_renameatx_np)
+#define __NR_searchfs                SYMBOLIC(__NR_searchfs)
+#define __NR_select_nocancel         SYMBOLIC(__NR_select_nocancel)
+#define __NR_sem_close               SYMBOLIC(__NR_sem_close)
+#define __NR_sem_open                SYMBOLIC(__NR_sem_open)
+#define __NR_sem_post                SYMBOLIC(__NR_sem_post)
+#define __NR_sem_trywait             SYMBOLIC(__NR_sem_trywait)
+#define __NR_sem_unlink              SYMBOLIC(__NR_sem_unlink)
+#define __NR_sem_wait                SYMBOLIC(__NR_sem_wait)
+#define __NR_sem_wait_nocancel       SYMBOLIC(__NR_sem_wait_nocancel)
+#define __NR_sendmsg_nocancel        SYMBOLIC(__NR_sendmsg_nocancel)
+#define __NR_sendmsg_x               SYMBOLIC(__NR_sendmsg_x)
+#define __NR_sendto_nocancel         SYMBOLIC(__NR_sendto_nocancel)
+#define __NR_setattrlist             SYMBOLIC(__NR_setattrlist)
+#define __NR_setattrlistat           SYMBOLIC(__NR_setattrlistat)
+#define __NR_setprivexec             SYMBOLIC(__NR_setprivexec)
+#define __NR_setsgroups              SYMBOLIC(__NR_setsgroups)
+#define __NR_settid                  SYMBOLIC(__NR_settid)
+#define __NR_settid_with_pid         SYMBOLIC(__NR_settid_with_pid)
+#define __NR_setwgroups              SYMBOLIC(__NR_setwgroups)
+#define __NR_sfi_ctl                 SYMBOLIC(__NR_sfi_ctl)
+#define __NR_sfi_pidctl              SYMBOLIC(__NR_sfi_pidctl)
+#define __NR_shared_region_check_np  SYMBOLIC(__NR_shared_region_check_np)
+#define __NR_sigsuspend_nocancel     SYMBOLIC(__NR_sigsuspend_nocancel)
+#define __NR_socket_delegate         SYMBOLIC(__NR_socket_delegate)
+#define __NR_stat_extended           SYMBOLIC(__NR_stat_extended)
+#define __NR_sysctlbyname            SYMBOLIC(__NR_sysctlbyname)
+#define __NR_system_override         SYMBOLIC(__NR_system_override)
+#define __NR_telemetry               SYMBOLIC(__NR_telemetry)
+#define __NR_terminate_with_payload  SYMBOLIC(__NR_terminate_with_payload)
+#define __NR_thread_selfcounts       SYMBOLIC(__NR_thread_selfcounts)
+#define __NR_thread_selfid           SYMBOLIC(__NR_thread_selfid)
+#define __NR_thread_selfusage        SYMBOLIC(__NR_thread_selfusage)
+#define __NR_ulock_wait              SYMBOLIC(__NR_ulock_wait)
+#define __NR_ulock_wake              SYMBOLIC(__NR_ulock_wake)
+#define __NR_umask_extended          SYMBOLIC(__NR_umask_extended)
+#define __NR_usrctl                  SYMBOLIC(__NR_usrctl)
+#define __NR_vfs_purge               SYMBOLIC(__NR_vfs_purge)
+#define __NR_vm_pressure_monitor     SYMBOLIC(__NR_vm_pressure_monitor)
+#define __NR_wait4_nocancel          SYMBOLIC(__NR_wait4_nocancel)
+#define __NR_waitevent               SYMBOLIC(__NR_waitevent)
+#define __NR_waitid_nocancel         SYMBOLIC(__NR_waitid_nocancel)
+#define __NR_watchevent              SYMBOLIC(__NR_watchevent)
+#define __NR_work_interval_ctl       SYMBOLIC(__NR_work_interval_ctl)
+#define __NR_workq_kernreturn        SYMBOLIC(__NR_workq_kernreturn)
+#define __NR_workq_open              SYMBOLIC(__NR_workq_open)
+#define __NR_write_nocancel          SYMBOLIC(__NR_write_nocancel)
+#define __NR_writev_nocancel         SYMBOLIC(__NR_writev_nocancel)
+#define __NR_abort2                  SYMBOLIC(__NR_abort2)
+#define __NR_afs3_syscall            SYMBOLIC(__NR_afs3_syscall)
+#define __NR_bindat                  SYMBOLIC(__NR_bindat)
+#define __NR_break                   SYMBOLIC(__NR_break)
+#define __NR_cap_enter               SYMBOLIC(__NR_cap_enter)
+#define __NR_cap_fcntls_get          SYMBOLIC(__NR_cap_fcntls_get)
+#define __NR_cap_fcntls_limit        SYMBOLIC(__NR_cap_fcntls_limit)
+#define __NR_cap_getmode             SYMBOLIC(__NR_cap_getmode)
+#define __NR_cap_ioctls_get          SYMBOLIC(__NR_cap_ioctls_get)
+#define __NR_cap_ioctls_limit        SYMBOLIC(__NR_cap_ioctls_limit)
+#define __NR_cap_rights_limit        SYMBOLIC(__NR_cap_rights_limit)
+#define __NR_clock_getcpuclockid2    SYMBOLIC(__NR_clock_getcpuclockid2)
+#define __NR_connectat               SYMBOLIC(__NR_connectat)
+#define __NR_cpuset                  SYMBOLIC(__NR_cpuset)
+#define __NR_cpuset_getdomain        SYMBOLIC(__NR_cpuset_getdomain)
+#define __NR_cpuset_getid            SYMBOLIC(__NR_cpuset_getid)
+#define __NR_cpuset_setdomain        SYMBOLIC(__NR_cpuset_setdomain)
+#define __NR_cpuset_setid            SYMBOLIC(__NR_cpuset_setid)
+#define __NR_eaccess                 SYMBOLIC(__NR_eaccess)
+#define __NR_extattr_delete_fd       SYMBOLIC(__NR_extattr_delete_fd)
+#define __NR_extattr_delete_file     SYMBOLIC(__NR_extattr_delete_file)
+#define __NR_extattr_delete_link     SYMBOLIC(__NR_extattr_delete_link)
+#define __NR_extattr_get_fd          SYMBOLIC(__NR_extattr_get_fd)
+#define __NR_extattr_get_file        SYMBOLIC(__NR_extattr_get_file)
+#define __NR_extattr_get_link        SYMBOLIC(__NR_extattr_get_link)
+#define __NR_extattr_list_fd         SYMBOLIC(__NR_extattr_list_fd)
+#define __NR_extattr_list_file       SYMBOLIC(__NR_extattr_list_file)
+#define __NR_extattr_list_link       SYMBOLIC(__NR_extattr_list_link)
+#define __NR_extattr_set_fd          SYMBOLIC(__NR_extattr_set_fd)
+#define __NR_extattr_set_file        SYMBOLIC(__NR_extattr_set_file)
+#define __NR_extattr_set_link        SYMBOLIC(__NR_extattr_set_link)
+#define __NR_extattrctl              SYMBOLIC(__NR_extattrctl)
+#define __NR_fexecve                 SYMBOLIC(__NR_fexecve)
+#define __NR_ffclock_getcounter      SYMBOLIC(__NR_ffclock_getcounter)
+#define __NR_ffclock_getestimate     SYMBOLIC(__NR_ffclock_getestimate)
+#define __NR_ffclock_setestimate     SYMBOLIC(__NR_ffclock_setestimate)
+#define __NR_fhlink                  SYMBOLIC(__NR_fhlink)
+#define __NR_fhlinkat                SYMBOLIC(__NR_fhlinkat)
+#define __NR_fhreadlink              SYMBOLIC(__NR_fhreadlink)
+#define __NR_getaudit                SYMBOLIC(__NR_getaudit)
+#define __NR_getcontext              SYMBOLIC(__NR_getcontext)
+#define __NR_getfhat                 SYMBOLIC(__NR_getfhat)
+#define __NR_gethostid               SYMBOLIC(__NR_gethostid)
+#define __NR_getkerninfo             SYMBOLIC(__NR_getkerninfo)
+#define __NR_getloginclass           SYMBOLIC(__NR_getloginclass)
+#define __NR_getpagesize             SYMBOLIC(__NR_getpagesize)
+#define __NR_gssd_syscall            SYMBOLIC(__NR_gssd_syscall)
+#define __NR_jail                    SYMBOLIC(__NR_jail)
+#define __NR_jail_attach             SYMBOLIC(__NR_jail_attach)
+#define __NR_jail_get                SYMBOLIC(__NR_jail_get)
+#define __NR_jail_remove             SYMBOLIC(__NR_jail_remove)
+#define __NR_jail_set                SYMBOLIC(__NR_jail_set)
+#define __NR_kenv                    SYMBOLIC(__NR_kenv)
+#define __NR_kldfind                 SYMBOLIC(__NR_kldfind)
+#define __NR_kldfirstmod             SYMBOLIC(__NR_kldfirstmod)
+#define __NR_kldload                 SYMBOLIC(__NR_kldload)
+#define __NR_kldnext                 SYMBOLIC(__NR_kldnext)
+#define __NR_kldstat                 SYMBOLIC(__NR_kldstat)
+#define __NR_kldsym                  SYMBOLIC(__NR_kldsym)
+#define __NR_kldunload               SYMBOLIC(__NR_kldunload)
+#define __NR_kldunloadf              SYMBOLIC(__NR_kldunloadf)
+#define __NR_kmq_notify              SYMBOLIC(__NR_kmq_notify)
+#define __NR_kmq_setattr             SYMBOLIC(__NR_kmq_setattr)
+#define __NR_kmq_timedreceive        SYMBOLIC(__NR_kmq_timedreceive)
+#define __NR_kmq_timedsend           SYMBOLIC(__NR_kmq_timedsend)
+#define __NR_kmq_unlink              SYMBOLIC(__NR_kmq_unlink)
+#define __NR_ksem_close              SYMBOLIC(__NR_ksem_close)
+#define __NR_ksem_destroy            SYMBOLIC(__NR_ksem_destroy)
+#define __NR_ksem_getvalue           SYMBOLIC(__NR_ksem_getvalue)
+#define __NR_ksem_init               SYMBOLIC(__NR_ksem_init)
+#define __NR_ksem_open               SYMBOLIC(__NR_ksem_open)
+#define __NR_ksem_post               SYMBOLIC(__NR_ksem_post)
+#define __NR_ksem_timedwait          SYMBOLIC(__NR_ksem_timedwait)
+#define __NR_ksem_trywait            SYMBOLIC(__NR_ksem_trywait)
+#define __NR_ksem_unlink             SYMBOLIC(__NR_ksem_unlink)
+#define __NR_ksem_wait               SYMBOLIC(__NR_ksem_wait)
+#define __NR_ktimer_create           SYMBOLIC(__NR_ktimer_create)
+#define __NR_ktimer_delete           SYMBOLIC(__NR_ktimer_delete)
+#define __NR_ktimer_getoverrun       SYMBOLIC(__NR_ktimer_getoverrun)
+#define __NR_ktimer_gettime          SYMBOLIC(__NR_ktimer_gettime)
+#define __NR_ktimer_settime          SYMBOLIC(__NR_ktimer_settime)
+#define __NR_lchflags                SYMBOLIC(__NR_lchflags)
+#define __NR_lchmod                  SYMBOLIC(__NR_lchmod)
+#define __NR_lgetfh                  SYMBOLIC(__NR_lgetfh)
+#define __NR_lpathconf               SYMBOLIC(__NR_lpathconf)
+#define __NR_lutimes                 SYMBOLIC(__NR_lutimes)
+#define __NR_mac_syscall             SYMBOLIC(__NR_mac_syscall)
+#define __NR_modfind                 SYMBOLIC(__NR_modfind)
+#define __NR_modfnext                SYMBOLIC(__NR_modfnext)
+#define __NR_modnext                 SYMBOLIC(__NR_modnext)
+#define __NR_modstat                 SYMBOLIC(__NR_modstat)
+#define __NR_nfstat                  SYMBOLIC(__NR_nfstat)
+#define __NR_nlm_syscall             SYMBOLIC(__NR_nlm_syscall)
+#define __NR_nlstat                  SYMBOLIC(__NR_nlstat)
+#define __NR_nmount                  SYMBOLIC(__NR_nmount)
+#define __NR_nnpfs_syscall           SYMBOLIC(__NR_nnpfs_syscall)
+#define __NR_nstat                   SYMBOLIC(__NR_nstat)
+#define __NR_pdfork                  SYMBOLIC(__NR_pdfork)
+#define __NR_pdgetpid                SYMBOLIC(__NR_pdgetpid)
+#define __NR_pdkill                  SYMBOLIC(__NR_pdkill)
+#define __NR_posix_openpt            SYMBOLIC(__NR_posix_openpt)
+#define __NR_procctl                 SYMBOLIC(__NR_procctl)
+#define __NR_psynch_cvwait           SYMBOLIC(__NR_psynch_cvwait)
+#define __NR_quota                   SYMBOLIC(__NR_quota)
+#define __NR_rctl_add_rule           SYMBOLIC(__NR_rctl_add_rule)
+#define __NR_rctl_get_limits         SYMBOLIC(__NR_rctl_get_limits)
+#define __NR_rctl_get_racct          SYMBOLIC(__NR_rctl_get_racct)
+#define __NR_rctl_get_rules          SYMBOLIC(__NR_rctl_get_rules)
+#define __NR_rctl_remove_rule        SYMBOLIC(__NR_rctl_remove_rule)
+#define __NR_recv                    SYMBOLIC(__NR_recv)
+#define __NR_rfork                   SYMBOLIC(__NR_rfork)
+#define __NR_rtprio                  SYMBOLIC(__NR_rtprio)
+#define __NR_rtprio_thread           SYMBOLIC(__NR_rtprio_thread)
+#define __NR_send                    SYMBOLIC(__NR_send)
+#define __NR_setaudit                SYMBOLIC(__NR_setaudit)
+#define __NR_setcontext              SYMBOLIC(__NR_setcontext)
+#define __NR_setfib                  SYMBOLIC(__NR_setfib)
+#define __NR_sethostid               SYMBOLIC(__NR_sethostid)
+#define __NR_setloginclass           SYMBOLIC(__NR_setloginclass)
+#define __NR_sigblock                SYMBOLIC(__NR_sigblock)
+#define __NR_sigqueue                SYMBOLIC(__NR_sigqueue)
+#define __NR_sigsetmask              SYMBOLIC(__NR_sigsetmask)
+#define __NR_sigstack                SYMBOLIC(__NR_sigstack)
+#define __NR_sigvec                  SYMBOLIC(__NR_sigvec)
+#define __NR_sigwaitinfo             SYMBOLIC(__NR_sigwaitinfo)
+#define __NR_sstk                    SYMBOLIC(__NR_sstk)
+#define __NR_swapcontext             SYMBOLIC(__NR_swapcontext)
+#define __NR_thr_create              SYMBOLIC(__NR_thr_create)
+#define __NR_thr_exit                SYMBOLIC(__NR_thr_exit)
+#define __NR_thr_kill                SYMBOLIC(__NR_thr_kill)
+#define __NR_thr_kill2               SYMBOLIC(__NR_thr_kill2)
+#define __NR_thr_new                 SYMBOLIC(__NR_thr_new)
+#define __NR_thr_self                SYMBOLIC(__NR_thr_self)
+#define __NR_thr_set_name            SYMBOLIC(__NR_thr_set_name)
+#define __NR_thr_suspend             SYMBOLIC(__NR_thr_suspend)
+#define __NR_thr_wake                SYMBOLIC(__NR_thr_wake)
+#define __NR_uuidgen                 SYMBOLIC(__NR_uuidgen)
+#define __NR_vadvise                 SYMBOLIC(__NR_vadvise)
+#define __NR_wait                    SYMBOLIC(__NR_wait)
+#define __NR_wait6                   SYMBOLIC(__NR_wait6)
+#define __NR_yield                   SYMBOLIC(__NR_yield)
+#define __NR_tfork                   SYMBOLIC(__NR_tfork)
+#define __NR_thrsleep                SYMBOLIC(__NR_thrsleep)
+#define __NR_thrwakeup               SYMBOLIC(__NR_thrwakeup)
+#define __NR_threxit                 SYMBOLIC(__NR_threxit)
+#define __NR_thrsigdivert            SYMBOLIC(__NR_thrsigdivert)
+#define __NR_set_tcb                 SYMBOLIC(__NR_set_tcb)
+#define __NR_get_tcb                 SYMBOLIC(__NR_get_tcb)
+#define __NR_adjfreq                 SYMBOLIC(__NR_adjfreq)
+#define __NR_getdtablecount          SYMBOLIC(__NR_getdtablecount)
+#define __NR_getlogin_r              SYMBOLIC(__NR_getlogin_r)
+#define __NR_getrtable               SYMBOLIC(__NR_getrtable)
+#define __NR_getthrid                SYMBOLIC(__NR_getthrid)
+#define __NR_kbind                   SYMBOLIC(__NR_kbind)
+#define __NR_mquery                  SYMBOLIC(__NR_mquery)
+#define __NR_obreak                  SYMBOLIC(__NR_obreak)
+#define __NR_sendsyslog              SYMBOLIC(__NR_sendsyslog)
+#define __NR_setrtable               SYMBOLIC(__NR_setrtable)
+#define __NR_swapctl                 SYMBOLIC(__NR_swapctl)
+#define __NR_thrkill                 SYMBOLIC(__NR_thrkill)
+#define __NR_unveil                  SYMBOLIC(__NR_unveil)
+#define __NR_mac_get_link            SYMBOLIC(__NR_mac_get_link)
+#define __NR_mac_set_link            SYMBOLIC(__NR_mac_set_link)
+#define __NR_mac_get_fd              SYMBOLIC(__NR_mac_get_fd)
+#define __NR_mac_get_file            SYMBOLIC(__NR_mac_get_file)
+#define __NR_mac_get_proc            SYMBOLIC(__NR_mac_get_proc)
+#define __NR_mac_set_fd              SYMBOLIC(__NR_mac_set_fd)
+#define __NR_mac_get_pid             SYMBOLIC(__NR_mac_get_pid)
+#define __NR_mac_set_proc            SYMBOLIC(__NR_mac_set_proc)
+#define __NR_mac_set_file            SYMBOLIC(__NR_mac_set_file)
+#define __NR_mac_execve              SYMBOLIC(__NR_mac_execve)
+#define __NR_acl_get_link            SYMBOLIC(__NR_acl_get_link)
+#define __NR_sigwait_nocancel        SYMBOLIC(__NR_sigwait_nocancel)
+#define __NR_cap_rights_get          SYMBOLIC(__NR_cap_rights_get)
+#define __NR_semwait_signal          SYMBOLIC(__NR_semwait_signal)
+#define __NR_acl_set_link            SYMBOLIC(__NR_acl_set_link)
+#define __NR_acl_set_fd              SYMBOLIC(__NR_acl_set_fd)
+#define __NR_old_semwait_signal      SYMBOLIC(__NR_old_semwait_signal)
+#define __NR_setugid                 SYMBOLIC(__NR_setugid)
+#define __NR_acl_aclcheck_fd         SYMBOLIC(__NR_acl_aclcheck_fd)
+#define __NR_acl_get_fd              SYMBOLIC(__NR_acl_get_fd)
+#define __NR___sysctl                SYMBOLIC(__NR___sysctl)
+#define __NR_mac_getfsstat           SYMBOLIC(__NR_mac_getfsstat)
+#define __NR_mac_get_mount           SYMBOLIC(__NR_mac_get_mount)
+#define __NR_acl_delete_link         SYMBOLIC(__NR_acl_delete_link)
+#define __NR_mac_mount               SYMBOLIC(__NR_mac_mount)
+#define __NR_acl_get_file            SYMBOLIC(__NR_acl_get_file)
+#define __NR_acl_aclcheck_file       SYMBOLIC(__NR_acl_aclcheck_file)
+#define __NR_acl_delete_fd           SYMBOLIC(__NR_acl_delete_fd)
+#define __NR_acl_aclcheck_link       SYMBOLIC(__NR_acl_aclcheck_link)
+#define __NR___mac_syscall           SYMBOLIC(__NR___mac_syscall)
+#define __NR_acl_set_file            SYMBOLIC(__NR_acl_set_file)
+#define __NR_acl_delete_file         SYMBOLIC(__NR_acl_delete_file)
+#define __NR_syscall                 SYMBOLIC(__NR_syscall)
+#define __NR__umtx_op                SYMBOLIC(__NR__umtx_op)
+#define __NR_semwait_signal_nocancel SYMBOLIC(__NR_semwait_signal_nocancel)
+#define __NR_old_semwait_signal_nocancel \
+  SYMBOLIC(__NR_old_semwait_signal_nocancel)
+#define __NR_sctp_peeloff             SYMBOLIC(__NR_sctp_peeloff)
+#define __NR_sctp_generic_recvmsg     SYMBOLIC(__NR_sctp_generic_recvmsg)
+#define __NR_sctp_generic_sendmsg     SYMBOLIC(__NR_sctp_generic_sendmsg)
+#define __NR_sctp_generic_sendmsg_iov SYMBOLIC(__NR_sctp_generic_sendmsg_iov)
+#define __NR_shared_region_map_and_slide_np \
+  SYMBOLIC(__NR_shared_region_map_and_slide_np)
+#define __NR_guarded_open_dprotected_np \
+  SYMBOLIC(__NR_guarded_open_dprotected_np)
+#define __NR_stack_snapshot_with_config \
+  SYMBOLIC(__NR_stack_snapshot_with_config)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long __NR_exit;
+extern const long __NR_exit_group;
+extern const long __NR_read;
+extern const long __NR_write;
+extern const long __NR_open;
+extern const long __NR_close;
+extern const long __NR_stat;
+extern const long __NR_fstat;
+extern const long __NR_lstat;
+extern const long __NR_poll;
+extern const long __NR_ppoll;
+extern const long __NR_lseek;
+extern const long __NR_mmap;
+extern const long __NR_msync;
+extern const long __NR_mprotect;
+extern const long __NR_munmap;
+extern const long __NR_sigaction;
+extern const long __NR_sigprocmask;
+extern const long __NR_ioctl;
+extern const long __NR_pread;
+extern const long __NR_pwrite;
+extern const long __NR_readv;
+extern const long __NR_writev;
+extern const long __NR_access;
+extern const long __NR_pipe;
+extern const long __NR_select;
+extern const long __NR_pselect;
+extern const long __NR_pselect6;
+extern const long __NR_sched_yield;
+extern const long __NR_mremap;
+extern const long __NR_mincore;
+extern const long __NR_madvise;
+extern const long __NR_shmget;
+extern const long __NR_shmat;
+extern const long __NR_shmctl;
+extern const long __NR_dup;
+extern const long __NR_dup2;
+extern const long __NR_pause;
+extern const long __NR_nanosleep;
+extern const long __NR_getitimer;
+extern const long __NR_setitimer;
+extern const long __NR_alarm;
+extern const long __NR_getpid;
+extern const long __NR_sendfile;
+extern const long __NR_socket;
+extern const long __NR_connect;
+extern const long __NR_accept;
+extern const long __NR_sendto;
+extern const long __NR_recvfrom;
+extern const long __NR_sendmsg;
+extern const long __NR_recvmsg;
+extern const long __NR_shutdown;
+extern const long __NR_bind;
+extern const long __NR_listen;
+extern const long __NR_getsockname;
+extern const long __NR_getpeername;
+extern const long __NR_socketpair;
+extern const long __NR_setsockopt;
+extern const long __NR_getsockopt;
+extern const long __NR_fork;
+extern const long __NR_vfork;
+extern const long __NR_posix_spawn;
+extern const long __NR_execve;
+extern const long __NR_wait4;
+extern const long __NR_kill;
+extern const long __NR_killpg;
+extern const long __NR_clone;
+extern const long __NR_tkill;
+extern const long __NR_futex;
+extern const long __NR_set_robust_list;
+extern const long __NR_get_robust_list;
+extern const long __NR_uname;
+extern const long __NR_semget;
+extern const long __NR_semop;
+extern const long __NR_semctl;
+extern const long __NR_shmdt;
+extern const long __NR_msgget;
+extern const long __NR_msgsnd;
+extern const long __NR_msgrcv;
+extern const long __NR_msgctl;
+extern const long __NR_fcntl;
+extern const long __NR_flock;
+extern const long __NR_fsync;
+extern const long __NR_fdatasync;
+extern const long __NR_truncate;
+extern const long __NR_ftruncate;
+extern const long __NR_getcwd;
+extern const long __NR_chdir;
+extern const long __NR_fchdir;
+extern const long __NR_rename;
+extern const long __NR_mkdir;
+extern const long __NR_rmdir;
+extern const long __NR_creat;
+extern const long __NR_link;
+extern const long __NR_unlink;
+extern const long __NR_symlink;
+extern const long __NR_readlink;
+extern const long __NR_chmod;
+extern const long __NR_fchmod;
+extern const long __NR_chown;
+extern const long __NR_fchown;
+extern const long __NR_lchown;
+extern const long __NR_umask;
+extern const long __NR_gettimeofday;
+extern const long __NR_getrlimit;
+extern const long __NR_getrusage;
+extern const long __NR_sysinfo;
+extern const long __NR_times;
+extern const long __NR_ptrace;
+extern const long __NR_syslog;
+extern const long __NR_getuid;
+extern const long __NR_getgid;
+extern const long __NR_getppid;
+extern const long __NR_getpgrp;
+extern const long __NR_setsid;
+extern const long __NR_getsid;
+extern const long __NR_getpgid;
+extern const long __NR_setpgid;
+extern const long __NR_geteuid;
+extern const long __NR_getegid;
+extern const long __NR_getgroups;
+extern const long __NR_setgroups;
+extern const long __NR_setreuid;
+extern const long __NR_setregid;
+extern const long __NR_setuid;
+extern const long __NR_setgid;
+extern const long __NR_setresuid;
+extern const long __NR_setresgid;
+extern const long __NR_getresuid;
+extern const long __NR_getresgid;
+extern const long __NR_sigpending;
+extern const long __NR_sigsuspend;
+extern const long __NR_sigaltstack;
+extern const long __NR_mknod;
+extern const long __NR_mknodat;
+extern const long __NR_mkfifo;
+extern const long __NR_mkfifoat;
+extern const long __NR_statfs;
+extern const long __NR_fstatfs;
+extern const long __NR_getpriority;
+extern const long __NR_setpriority;
+extern const long __NR_mlock;
+extern const long __NR_munlock;
+extern const long __NR_mlockall;
+extern const long __NR_munlockall;
+extern const long __NR_setrlimit;
+extern const long __NR_chroot;
+extern const long __NR_sync;
+extern const long __NR_acct;
+extern const long __NR_settimeofday;
+extern const long __NR_mount;
+extern const long __NR_reboot;
+extern const long __NR_quotactl;
+extern const long __NR_setfsuid;
+extern const long __NR_setfsgid;
+extern const long __NR_capget;
+extern const long __NR_capset;
+extern const long __NR_sigtimedwait;
+extern const long __NR_rt_sigqueueinfo;
+extern const long __NR_personality;
+extern const long __NR_ustat;
+extern const long __NR_sysfs;
+extern const long __NR_sched_setparam;
+extern const long __NR_sched_getparam;
+extern const long __NR_sched_setscheduler;
+extern const long __NR_sched_getscheduler;
+extern const long __NR_sched_get_priority_max;
+extern const long __NR_sched_get_priority_min;
+extern const long __NR_sched_rr_get_interval;
+extern const long __NR_vhangup;
+extern const long __NR_modify_ldt;
+extern const long __NR_pivot_root;
+extern const long __NR__sysctl;
+extern const long __NR_prctl;
+extern const long __NR_arch_prctl;
+extern const long __NR_adjtimex;
+extern const long __NR_umount2;
+extern const long __NR_swapon;
+extern const long __NR_swapoff;
+extern const long __NR_sethostname;
+extern const long __NR_setdomainname;
+extern const long __NR_iopl;
+extern const long __NR_ioperm;
+extern const long __NR_init_module;
+extern const long __NR_delete_module;
+extern const long __NR_gettid;
+extern const long __NR_readahead;
+extern const long __NR_setxattr;
+extern const long __NR_fsetxattr;
+extern const long __NR_getxattr;
+extern const long __NR_fgetxattr;
+extern const long __NR_listxattr;
+extern const long __NR_flistxattr;
+extern const long __NR_removexattr;
+extern const long __NR_fremovexattr;
+extern const long __NR_lsetxattr;
+extern const long __NR_lgetxattr;
+extern const long __NR_llistxattr;
+extern const long __NR_lremovexattr;
+extern const long __NR_sched_setaffinity;
+extern const long __NR_sched_getaffinity;
+extern const long __NR_cpuset_getaffinity;
+extern const long __NR_cpuset_setaffinity;
+extern const long __NR_io_setup;
+extern const long __NR_io_destroy;
+extern const long __NR_io_getevents;
+extern const long __NR_io_submit;
+extern const long __NR_io_cancel;
+extern const long __NR_lookup_dcookie;
+extern const long __NR_epoll_create;
+extern const long __NR_epoll_wait;
+extern const long __NR_epoll_ctl;
+extern const long __NR_getdents;
+extern const long __NR_set_tid_address;
+extern const long __NR_restart_syscall;
+extern const long __NR_semtimedop;
+extern const long __NR_fadvise;
+extern const long __NR_timer_create;
+extern const long __NR_timer_settime;
+extern const long __NR_timer_gettime;
+extern const long __NR_timer_getoverrun;
+extern const long __NR_timer_delete;
+extern const long __NR_clock_settime;
+extern const long __NR_clock_gettime;
+extern const long __NR_clock_getres;
+extern const long __NR_clock_nanosleep;
+extern const long __NR_tgkill;
+extern const long __NR_mbind;
+extern const long __NR_set_mempolicy;
+extern const long __NR_get_mempolicy;
+extern const long __NR_mq_open;
+extern const long __NR_mq_unlink;
+extern const long __NR_mq_timedsend;
+extern const long __NR_mq_timedreceive;
+extern const long __NR_mq_notify;
+extern const long __NR_mq_getsetattr;
+extern const long __NR_kexec_load;
+extern const long __NR_waitid;
+extern const long __NR_add_key;
+extern const long __NR_request_key;
+extern const long __NR_keyctl;
+extern const long __NR_ioprio_set;
+extern const long __NR_ioprio_get;
+extern const long __NR_inotify_init;
+extern const long __NR_inotify_add_watch;
+extern const long __NR_inotify_rm_watch;
+extern const long __NR_openat;
+extern const long __NR_mkdirat;
+extern const long __NR_fchownat;
+extern const long __NR_utime;
+extern const long __NR_utimes;
+extern const long __NR_futimesat;
+extern const long __NR_futimes;
+extern const long __NR_futimens;
+extern const long __NR_fstatat;
+extern const long __NR_unlinkat;
+extern const long __NR_renameat;
+extern const long __NR_linkat;
+extern const long __NR_symlinkat;
+extern const long __NR_readlinkat;
+extern const long __NR_fchmodat;
+extern const long __NR_faccessat;
+extern const long __NR_unshare;
+extern const long __NR_splice;
+extern const long __NR_tee;
+extern const long __NR_sync_file_range;
+extern const long __NR_vmsplice;
+extern const long __NR_migrate_pages;
+extern const long __NR_move_pages;
+extern const long __NR_preadv;
+extern const long __NR_pwritev;
+extern const long __NR_utimensat;
+extern const long __NR_fallocate;
+extern const long __NR_posix_fallocate;
+extern const long __NR_accept4;
+extern const long __NR_dup3;
+extern const long __NR_pipe2;
+extern const long __NR_epoll_pwait;
+extern const long __NR_epoll_create1;
+extern const long __NR_perf_event_open;
+extern const long __NR_inotify_init1;
+extern const long __NR_rt_tgsigqueueinfo;
+extern const long __NR_signalfd;
+extern const long __NR_signalfd4;
+extern const long __NR_eventfd;
+extern const long __NR_eventfd2;
+extern const long __NR_timerfd_create;
+extern const long __NR_timerfd_settime;
+extern const long __NR_timerfd_gettime;
+extern const long __NR_recvmmsg;
+extern const long __NR_fanotify_init;
+extern const long __NR_fanotify_mark;
+extern const long __NR_prlimit;
+extern const long __NR_name_to_handle_at;
+extern const long __NR_open_by_handle_at;
+extern const long __NR_clock_adjtime;
+extern const long __NR_syncfs;
+extern const long __NR_sendmmsg;
+extern const long __NR_setns;
+extern const long __NR_getcpu;
+extern const long __NR_process_vm_readv;
+extern const long __NR_process_vm_writev;
+extern const long __NR_kcmp;
+extern const long __NR_finit_module;
+extern const long __NR_sched_setattr;
+extern const long __NR_sched_getattr;
+extern const long __NR_renameat2;
+extern const long __NR_seccomp;
+extern const long __NR_getrandom;
+extern const long __NR_memfd_create;
+extern const long __NR_kexec_file_load;
+extern const long __NR_bpf;
+extern const long __NR_execveat;
+extern const long __NR_userfaultfd;
+extern const long __NR_membarrier;
+extern const long __NR_mlock2;
+extern const long __NR_copy_file_range;
+extern const long __NR_preadv2;
+extern const long __NR_pwritev2;
+extern const long __NR_pkey_mprotect;
+extern const long __NR_pkey_alloc;
+extern const long __NR_pkey_free;
+extern const long __NR_statx;
+extern const long __NR_io_pgetevents;
+extern const long __NR_rseq;
+extern const long __NR_pidfd_send_signal;
+extern const long __NR_io_uring_setup;
+extern const long __NR_io_uring_enter;
+extern const long __NR_io_uring_register;
+extern const long __NR_pledge;
+extern const long __NR_msyscall;
+extern const long __NR_ktrace;
+extern const long __NR_kqueue;
+extern const long __NR_kevent;
+extern const long __NR_revoke;
+extern const long __NR_setlogin;
+extern const long __NR_getfh;
+extern const long __NR_chflags;
+extern const long __NR_getfsstat;
+extern const long __NR_nfssvc;
+extern const long __NR_adjtime;
+extern const long __NR_fchflags;
+extern const long __NR_seteuid;
+extern const long __NR_setegid;
+extern const long __NR_fpathconf;
+extern const long __NR_fhopen;
+extern const long __NR_unmount;
+extern const long __NR_issetugid;
+extern const long __NR_minherit;
+extern const long __NR_pathconf;
+extern const long __NR_sysctl;
+extern const long __NR_ntp_adjtime;
+extern const long __NR_ntp_gettime;
+extern const long __NR_shm_unlink;
+extern const long __NR_shm_open;
+extern const long __NR_aio_read;
+extern const long __NR_aio_suspend;
+extern const long __NR_aio_cancel;
+extern const long __NR_aio_fsync;
+extern const long __NR_aio_error;
+extern const long __NR_aio_return;
+extern const long __NR_aio_write;
+extern const long __NR_aio_waitcomplete;
+extern const long __NR_aio_suspend_nocancel;
+extern const long __NR_aio_mlock;
+extern const long __NR_sigwait;
+extern const long __NR_undelete;
+extern const long __NR_getlogin;
+extern const long __NR_getdtablesize;
+extern const long __NR_setauid;
+extern const long __NR_audit;
+extern const long __NR_auditctl;
+extern const long __NR_getaudit_addr;
+extern const long __NR_getdirentries;
+extern const long __NR_lio_listio;
+extern const long __NR_setaudit_addr;
+extern const long __NR_getauid;
+extern const long __NR_semsys;
+extern const long __NR_auditon;
+extern const long __NR_msgsys;
+extern const long __NR_shmsys;
+extern const long __NR_fhstat;
+extern const long __NR_chflagsat;
+extern const long __NR_profil;
+extern const long __NR_fhstatfs;
+extern const long __NR_utrace;
+extern const long __NR_closefrom;
+extern const long __NR_pthread_markcancel;
+extern const long __NR_pthread_kill;
+extern const long __NR_pthread_fchdir;
+extern const long __NR_pthread_sigmask;
+extern const long __NR_pthread_chdir;
+extern const long __NR_pthread_canceled;
+extern const long __NR_disable_threadsignal;
+extern const long __NR_abort_with_payload;
+extern const long __NR_accept_nocancel;
+extern const long __NR_access_extended;
+extern const long __NR_audit_session_join;
+extern const long __NR_audit_session_port;
+extern const long __NR_audit_session_self;
+extern const long __NR_bsdthread_create;
+extern const long __NR_bsdthread_ctl;
+extern const long __NR_bsdthread_register;
+extern const long __NR_bsdthread_terminate;
+extern const long __NR_change_fdguard_np;
+extern const long __NR_chmod_extended;
+extern const long __NR_clonefileat;
+extern const long __NR_close_nocancel;
+extern const long __NR_coalition;
+extern const long __NR_coalition_info;
+extern const long __NR_connect_nocancel;
+extern const long __NR_connectx;
+extern const long __NR_copyfile;
+extern const long __NR_csops;
+extern const long __NR_csops_audittoken;
+extern const long __NR_csrctl;
+extern const long __NR_delete;
+extern const long __NR_disconnectx;
+extern const long __NR_exchangedata;
+extern const long __NR_fchmod_extended;
+extern const long __NR_fclonefileat;
+extern const long __NR_fcntl_nocancel;
+extern const long __NR_ffsctl;
+extern const long __NR_fgetattrlist;
+extern const long __NR_fileport_makefd;
+extern const long __NR_fileport_makeport;
+extern const long __NR_fmount;
+extern const long __NR_fs_snapshot;
+extern const long __NR_fsctl;
+extern const long __NR_fsetattrlist;
+extern const long __NR_fstat_extended;
+extern const long __NR_fsync_nocancel;
+extern const long __NR_getattrlist;
+extern const long __NR_getattrlistat;
+extern const long __NR_getattrlistbulk;
+extern const long __NR_getdirentriesattr;
+extern const long __NR_gethostuuid;
+extern const long __NR_getsgroups;
+extern const long __NR_getwgroups;
+extern const long __NR_grab_pgo_data;
+extern const long __NR_guarded_close_np;
+extern const long __NR_guarded_kqueue_np;
+extern const long __NR_guarded_open_np;
+extern const long __NR_guarded_pwrite_np;
+extern const long __NR_guarded_write_np;
+extern const long __NR_guarded_writev_np;
+extern const long __NR_identitysvc;
+extern const long __NR_initgroups;
+extern const long __NR_iopolicysys;
+extern const long __NR_kas_info;
+extern const long __NR_kdebug_trace;
+extern const long __NR_kdebug_trace_string;
+extern const long __NR_kdebug_typefilter;
+extern const long __NR_kevent_id;
+extern const long __NR_kevent_qos;
+extern const long __NR_ledger;
+extern const long __NR_lstat_extended;
+extern const long __NR_memorystatus_control;
+extern const long __NR_memorystatus_get_level;
+extern const long __NR_microstackshot;
+extern const long __NR_mkdir_extended;
+extern const long __NR_mkfifo_extended;
+extern const long __NR_modwatch;
+extern const long __NR_mremap_encrypted;
+extern const long __NR_msgrcv_nocancel;
+extern const long __NR_msgsnd_nocancel;
+extern const long __NR_msync_nocancel;
+extern const long __NR_necp_client_action;
+extern const long __NR_necp_match_policy;
+extern const long __NR_necp_open;
+extern const long __NR_necp_session_action;
+extern const long __NR_necp_session_open;
+extern const long __NR_net_qos_guideline;
+extern const long __NR_netagent_trigger;
+extern const long __NR_nfsclnt;
+extern const long __NR_open_dprotected_np;
+extern const long __NR_open_extended;
+extern const long __NR_open_nocancel;
+extern const long __NR_openat_nocancel;
+extern const long __NR_openbyid_np;
+extern const long __NR_os_fault_with_payload;
+extern const long __NR_peeloff;
+extern const long __NR_persona;
+extern const long __NR_pid_hibernate;
+extern const long __NR_pid_resume;
+extern const long __NR_pid_shutdown_sockets;
+extern const long __NR_pid_suspend;
+extern const long __NR_poll_nocancel;
+extern const long __NR_pread_nocancel;
+extern const long __NR_proc_info;
+extern const long __NR_proc_rlimit_control;
+extern const long __NR_proc_trace_log;
+extern const long __NR_proc_uuid_policy;
+extern const long __NR_process_policy;
+extern const long __NR_pselect_nocancel;
+extern const long __NR_psynch_cvbroad;
+extern const long __NR_psynch_cvclrprepost;
+extern const long __NR_psynch_cvsignal;
+extern const long __NR_psynch_mutexdrop;
+extern const long __NR_psynch_mutexwait;
+extern const long __NR_psynch_rw_downgrade;
+extern const long __NR_psynch_rw_longrdlock;
+extern const long __NR_psynch_rw_rdlock;
+extern const long __NR_psynch_rw_unlock;
+extern const long __NR_psynch_rw_unlock2;
+extern const long __NR_psynch_rw_upgrade;
+extern const long __NR_psynch_rw_wrlock;
+extern const long __NR_psynch_rw_yieldwrlock;
+extern const long __NR_pwrite_nocancel;
+extern const long __NR_read_nocancel;
+extern const long __NR_readv_nocancel;
+extern const long __NR_recvfrom_nocancel;
+extern const long __NR_recvmsg_nocancel;
+extern const long __NR_recvmsg_x;
+extern const long __NR_renameatx_np;
+extern const long __NR_searchfs;
+extern const long __NR_select_nocancel;
+extern const long __NR_sem_close;
+extern const long __NR_sem_open;
+extern const long __NR_sem_post;
+extern const long __NR_sem_trywait;
+extern const long __NR_sem_unlink;
+extern const long __NR_sem_wait;
+extern const long __NR_sem_wait_nocancel;
+extern const long __NR_sendmsg_nocancel;
+extern const long __NR_sendmsg_x;
+extern const long __NR_sendto_nocancel;
+extern const long __NR_setattrlist;
+extern const long __NR_setattrlistat;
+extern const long __NR_setprivexec;
+extern const long __NR_setsgroups;
+extern const long __NR_settid;
+extern const long __NR_settid_with_pid;
+extern const long __NR_setwgroups;
+extern const long __NR_sfi_ctl;
+extern const long __NR_sfi_pidctl;
+extern const long __NR_shared_region_check_np;
+extern const long __NR_sigsuspend_nocancel;
+extern const long __NR_socket_delegate;
+extern const long __NR_stat_extended;
+extern const long __NR_sysctlbyname;
+extern const long __NR_system_override;
+extern const long __NR_telemetry;
+extern const long __NR_terminate_with_payload;
+extern const long __NR_thread_selfcounts;
+extern const long __NR_thread_selfid;
+extern const long __NR_thread_selfusage;
+extern const long __NR_ulock_wait;
+extern const long __NR_ulock_wake;
+extern const long __NR_umask_extended;
+extern const long __NR_usrctl;
+extern const long __NR_vfs_purge;
+extern const long __NR_vm_pressure_monitor;
+extern const long __NR_wait4_nocancel;
+extern const long __NR_waitevent;
+extern const long __NR_waitid_nocancel;
+extern const long __NR_watchevent;
+extern const long __NR_work_interval_ctl;
+extern const long __NR_workq_kernreturn;
+extern const long __NR_workq_open;
+extern const long __NR_write_nocancel;
+extern const long __NR_writev_nocancel;
+extern const long __NR_abort2;
+extern const long __NR_afs3_syscall;
+extern const long __NR_bindat;
+extern const long __NR_break;
+extern const long __NR_cap_enter;
+extern const long __NR_cap_fcntls_get;
+extern const long __NR_cap_fcntls_limit;
+extern const long __NR_cap_getmode;
+extern const long __NR_cap_ioctls_get;
+extern const long __NR_cap_ioctls_limit;
+extern const long __NR_cap_rights_limit;
+extern const long __NR_clock_getcpuclockid2;
+extern const long __NR_connectat;
+extern const long __NR_cpuset;
+extern const long __NR_cpuset_getdomain;
+extern const long __NR_cpuset_getid;
+extern const long __NR_cpuset_setdomain;
+extern const long __NR_cpuset_setid;
+extern const long __NR_eaccess;
+extern const long __NR_extattr_delete_fd;
+extern const long __NR_extattr_delete_file;
+extern const long __NR_extattr_delete_link;
+extern const long __NR_extattr_get_fd;
+extern const long __NR_extattr_get_file;
+extern const long __NR_extattr_get_link;
+extern const long __NR_extattr_list_fd;
+extern const long __NR_extattr_list_file;
+extern const long __NR_extattr_list_link;
+extern const long __NR_extattr_set_fd;
+extern const long __NR_extattr_set_file;
+extern const long __NR_extattr_set_link;
+extern const long __NR_extattrctl;
+extern const long __NR_fexecve;
+extern const long __NR_ffclock_getcounter;
+extern const long __NR_ffclock_getestimate;
+extern const long __NR_ffclock_setestimate;
+extern const long __NR_fhlink;
+extern const long __NR_fhlinkat;
+extern const long __NR_fhreadlink;
+extern const long __NR_getaudit;
+extern const long __NR_getcontext;
+extern const long __NR_getfhat;
+extern const long __NR_gethostid;
+extern const long __NR_getkerninfo;
+extern const long __NR_getloginclass;
+extern const long __NR_getpagesize;
+extern const long __NR_gssd_syscall;
+extern const long __NR_jail;
+extern const long __NR_jail_attach;
+extern const long __NR_jail_get;
+extern const long __NR_jail_remove;
+extern const long __NR_jail_set;
+extern const long __NR_kenv;
+extern const long __NR_kldfind;
+extern const long __NR_kldfirstmod;
+extern const long __NR_kldload;
+extern const long __NR_kldnext;
+extern const long __NR_kldstat;
+extern const long __NR_kldsym;
+extern const long __NR_kldunload;
+extern const long __NR_kldunloadf;
+extern const long __NR_kmq_notify;
+extern const long __NR_kmq_setattr;
+extern const long __NR_kmq_timedreceive;
+extern const long __NR_kmq_timedsend;
+extern const long __NR_kmq_unlink;
+extern const long __NR_ksem_close;
+extern const long __NR_ksem_destroy;
+extern const long __NR_ksem_getvalue;
+extern const long __NR_ksem_init;
+extern const long __NR_ksem_open;
+extern const long __NR_ksem_post;
+extern const long __NR_ksem_timedwait;
+extern const long __NR_ksem_trywait;
+extern const long __NR_ksem_unlink;
+extern const long __NR_ksem_wait;
+extern const long __NR_ktimer_create;
+extern const long __NR_ktimer_delete;
+extern const long __NR_ktimer_getoverrun;
+extern const long __NR_ktimer_gettime;
+extern const long __NR_ktimer_settime;
+extern const long __NR_lchflags;
+extern const long __NR_lchmod;
+extern const long __NR_lgetfh;
+extern const long __NR_lpathconf;
+extern const long __NR_lutimes;
+extern const long __NR_mac_syscall;
+extern const long __NR_modfind;
+extern const long __NR_modfnext;
+extern const long __NR_modnext;
+extern const long __NR_modstat;
+extern const long __NR_nfstat;
+extern const long __NR_nlm_syscall;
+extern const long __NR_nlstat;
+extern const long __NR_nmount;
+extern const long __NR_nnpfs_syscall;
+extern const long __NR_nstat;
+extern const long __NR_pdfork;
+extern const long __NR_pdgetpid;
+extern const long __NR_pdkill;
+extern const long __NR_posix_openpt;
+extern const long __NR_procctl;
+extern const long __NR_psynch_cvwait;
+extern const long __NR_quota;
+extern const long __NR_rctl_add_rule;
+extern const long __NR_rctl_get_limits;
+extern const long __NR_rctl_get_racct;
+extern const long __NR_rctl_get_rules;
+extern const long __NR_rctl_remove_rule;
+extern const long __NR_recv;
+extern const long __NR_rfork;
+extern const long __NR_rtprio;
+extern const long __NR_rtprio_thread;
+extern const long __NR_send;
+extern const long __NR_setaudit;
+extern const long __NR_setcontext;
+extern const long __NR_setfib;
+extern const long __NR_sethostid;
+extern const long __NR_setloginclass;
+extern const long __NR_sigblock;
+extern const long __NR_sigqueue;
+extern const long __NR_sigsetmask;
+extern const long __NR_sigstack;
+extern const long __NR_sigvec;
+extern const long __NR_sigwaitinfo;
+extern const long __NR_sstk;
+extern const long __NR_swapcontext;
+extern const long __NR_thr_create;
+extern const long __NR_thr_exit;
+extern const long __NR_thr_kill;
+extern const long __NR_thr_kill2;
+extern const long __NR_thr_new;
+extern const long __NR_thr_self;
+extern const long __NR_thr_set_name;
+extern const long __NR_thr_suspend;
+extern const long __NR_thr_wake;
+extern const long __NR_uuidgen;
+extern const long __NR_vadvise;
+extern const long __NR_wait;
+extern const long __NR_wait6;
+extern const long __NR_yield;
+extern const long __NR_tfork;
+extern const long __NR_thrsleep;
+extern const long __NR_thrwakeup;
+extern const long __NR_threxit;
+extern const long __NR_thrsigdivert;
+extern const long __NR_set_tcb;
+extern const long __NR_get_tcb;
+extern const long __NR_adjfreq;
+extern const long __NR_getdtablecount;
+extern const long __NR_getlogin_r;
+extern const long __NR_getrtable;
+extern const long __NR_getthrid;
+extern const long __NR_kbind;
+extern const long __NR_mquery;
+extern const long __NR_obreak;
+extern const long __NR_sendsyslog;
+extern const long __NR_setrtable;
+extern const long __NR_swapctl;
+extern const long __NR_thrkill;
+extern const long __NR_unveil;
+extern const long __NR_mac_get_link;
+extern const long __NR_mac_set_link;
+extern const long __NR_mac_get_fd;
+extern const long __NR_mac_get_file;
+extern const long __NR_mac_get_proc;
+extern const long __NR_mac_set_fd;
+extern const long __NR_mac_get_pid;
+extern const long __NR_mac_set_proc;
+extern const long __NR_mac_set_file;
+extern const long __NR_mac_execve;
+extern const long __NR_acl_get_link;
+extern const long __NR_sigwait_nocancel;
+extern const long __NR_cap_rights_get;
+extern const long __NR_semwait_signal;
+extern const long __NR_acl_set_link;
+extern const long __NR_acl_set_fd;
+extern const long __NR_old_semwait_signal;
+extern const long __NR_setugid;
+extern const long __NR_acl_aclcheck_fd;
+extern const long __NR_acl_get_fd;
+extern const long __NR___sysctl;
+extern const long __NR_mac_getfsstat;
+extern const long __NR_mac_get_mount;
+extern const long __NR_acl_delete_link;
+extern const long __NR_mac_mount;
+extern const long __NR_acl_get_file;
+extern const long __NR_acl_aclcheck_file;
+extern const long __NR_acl_delete_fd;
+extern const long __NR_acl_aclcheck_link;
+extern const long __NR___mac_syscall;
+extern const long __NR_acl_set_file;
+extern const long __NR_acl_delete_file;
+extern const long __NR_syscall;
+extern const long __NR__umtx_op;
+extern const long __NR_semwait_signal_nocancel;
+extern const long __NR_old_semwait_signal_nocancel;
+extern const long __NR_sctp_peeloff;
+extern const long __NR_sctp_generic_recvmsg;
+extern const long __NR_sctp_generic_sendmsg;
+extern const long __NR_sctp_generic_sendmsg_iov;
+extern const long __NR_shared_region_map_and_slide_np;
+extern const long __NR_guarded_open_dprotected_np;
+extern const long __NR_stack_snapshot_with_config;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/w.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_W_H_
+
+#define WNOHANG    SYMBOLIC(WNOHANG)
+#define WUNTRACED  SYMBOLIC(WUNTRACED)
+#define WCONTINUED SYMBOLIC(WCONTINUED)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long WNOHANG;
+extern const long WUNTRACED;
+extern const long WCONTINUED;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/**
+ * @fileoverview GDB Attach Support Code.
+ *
+ * The goal of these macros is to make the backtrace into the failing
+ * code as short as possible. It also helps avoid GDB getting confused
+ * about how we don't use its readability destroying unwind directives.
+ */
+
+extern volatile int g_gdbsync;
+
+int gdbexec(const char *);
+int attachdebugger(intptr_t);
+
+#define attachdebugger(CONTINUE_TO_ADDR) /* shorten backtraces */ \
+  SYNCHRONIZE_DEBUGGER((attachdebugger)(CONTINUE_TO_ADDR))
+
+#define SYNCHRONIZE_DEBUGGER(PID)                                    \
+  ({                                                                 \
+    int Rc, Pid = (PID);                                             \
+    if (Pid != -1) {                                                 \
+      while ((Rc = __inline_wait4(Pid, NULL, WNOHANG, NULL)) == 0) { \
+        if (g_gdbsync) {                                             \
+          g_gdbsync = 0;                                             \
+          if (Rc > 0) Pid = 0;                                       \
+          break;                                                     \
+        } else {                                                     \
+          sched_yield();                                             \
+        }                                                            \
+      }                                                              \
+    }                                                                \
+    Pid;                                                             \
+  })
+
+#define __inline_wait4(PID, OPT_OUT_WSTATUS, OPTIONS, OPT_OUT_RUSAGE) \
+  ({                                                                  \
+    int64_t WaAx;                                                     \
+    if (!IsWindows()) {                                               \
+      asm volatile("mov\t%5,%%r10\n\t"                                \
+                   "syscall"                                          \
+                   : "=a"(WaAx)                                       \
+                   : "0"(__NR_wait4), "D"(PID), "S"(OPT_OUT_WSTATUS), \
+                     "d"(OPTIONS), "g"(OPT_OUT_RUSAGE)                \
+                   : "rcx", "r10", "r11", "cc", "memory");            \
+    } else {                                                          \
+      WaAx = sys_wait4_nt(PID, OPT_OUT_WSTATUS, OPTIONS, OPT_OUT_RUSAGE); \
+    }                                                                 \
+    WaAx;                                                             \
+  })
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/log/log.h */
+
+#define COSMOPOLITAN_LIBC_LOG_LOG_H_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § liblog                                                    ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define kLogFatal   0
+#define kLogError   1
+#define kLogWarn    2
+#define kLogInfo    3
+#define kLogVerbose 4
+#define kLogDebug   5
+
+/**
+ * Log level for compile-time DCE.
+ */
+#ifndef LOGGABLELEVEL
+#ifndef TINY
+#define LOGGABLELEVEL kLogDebug
+/* #elif IsTiny() */
+/* #define LOGGABLELEVEL kLogInfo */
+#else
+#define LOGGABLELEVEL kLogVerbose
+#endif
+#endif
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern FILE *__log_file;
+
+void perror(const char *) relegated;   /* print the last system error */
+void __die(void) relegated wontreturn; /* print backtrace and abort() */
+void meminfo(int);                     /* shows malloc statistics &c. */
+void memsummary(int);                  /* light version of same thing */
+uint16_t getttycols(uint16_t);
+int getttysize(int, struct winsize *) paramsnonnull();
+bool IsTerminalInarticulate(void) nosideeffect;
+const char *commandvenv(const char *, const char *);
+const char *GetAddr2linePath(void);
+const char *GetGdbPath(void);
+
+void showcrashreports(void);
+void callexitontermination(struct sigset *);
+bool32 IsDebuggerPresent(bool);
+bool IsRunningUnderMake(void);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § liblog » logging                                          ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+#ifndef __STRICT_ANSI__
+
+extern unsigned __log_level; /* log level for runtime check */
+
+#define LOGGABLE(LEVEL)                                          \
+  ((!__builtin_constant_p(LEVEL) || (LEVEL) <= LOGGABLELEVEL) && \
+   (LEVEL) <= __log_level)
+
+#define LOGF(FMT, ...)                                               \
+  do {                                                               \
+    if (LOGGABLE(kLogInfo)) {                                        \
+      flogf(kLogInfo, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
+    }                                                                \
+  } while (0)
+
+#define VFLOG(FMT, VA)                                     \
+  do {                                                     \
+    if (LOGGABLE(kLogInfo)) {                              \
+      vflogf(kLogInfo, __FILE__, __LINE__, NULL, FMT, VA); \
+    }                                                      \
+  } while (0)
+
+#define FLOGF(F, FMT, ...)                                        \
+  do {                                                            \
+    if (LOGGABLE(kLogInfo)) {                                     \
+      flogf(kLogInfo, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \
+    }                                                             \
+  } while (0)
+
+#define VFLOGF(F, FMT, VA)                              \
+  do {                                                  \
+    if (LOGGABLE(kLogInfo)) {                           \
+      vflogf(kLogInfo, __FILE__, __LINE__, F, FMT, VA); \
+    }                                                   \
+  } while (0)
+
+#define WARNF(FMT, ...)                                              \
+  do {                                                               \
+    if (LOGGABLE(kLogWarn)) {                                        \
+      flogf(kLogWarn, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
+    }                                                                \
+  } while (0)
+
+#define VWARNF(FMT, VA)                                    \
+  do {                                                     \
+    if (LOGGABLE(kLogWarn)) {                              \
+      vflogf(kLogWarn, __FILE__, __LINE__, NULL, FMT, VA); \
+    }                                                      \
+  } while (0)
+
+#define FWARNF(F, FMT, ...)                                       \
+  do {                                                            \
+    if (LOGGABLE(kLogWarn)) {                                     \
+      flogf(kLogWarn, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \
+    }                                                             \
+  } while (0)
+
+#define VFWARNF(F, FMT, VA)                             \
+  do {                                                  \
+    if (LOGGABLE(kLogWarn)) {                           \
+      vflogf(kLogWarn, __FILE__, __LINE__, F, FMT, VA); \
+    }                                                   \
+  } while (0)
+
+#define FATALF(FMT, ...)                                              \
+  do {                                                                \
+    ffatalf(kLogFatal, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
+    unreachable;                                                      \
+  } while (0)
+
+#define VFATALF(FMT, VA)                                    \
+  do {                                                      \
+    vffatalf(kLogFatal, __FILE__, __LINE__, NULL, FMT, VA); \
+    unreachable;                                            \
+  } while (0)
+
+#define FFATALF(F, FMT, ...)                                       \
+  do {                                                             \
+    ffatalf(kLogFatal, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \
+    unreachable;                                                   \
+  } while (0)
+
+#define VFFATALF(F, FMT, VA)                             \
+  do {                                                   \
+    vffatalf(kLogFatal, __FILE__, __LINE__, F, FMT, VA); \
+    unreachable;                                         \
+  } while (0)
+
+#define DEBUGF(FMT, ...)                                                \
+  do {                                                                  \
+    if (LOGGABLE(kLogDebug)) {                                          \
+      fdebugf(kLogDebug, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
+    }                                                                   \
+  } while (0)
+
+#define VERBOSEF(FMT, ...)                                                  \
+  do {                                                                      \
+    if (LOGGABLE(kLogVerbose)) {                                            \
+      fverbosef(kLogVerbose, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \
+    }                                                                       \
+  } while (0)
+
+#define VDEBUGF(FMT, VA)                                      \
+  do {                                                        \
+    if (LOGGABLE(kLogDebug)) {                                \
+      vfdebugf(kLogDebug, __FILE__, __LINE__, NULL, FMT, VA); \
+    }                                                         \
+  } while (0)
+
+#define FDEBUGF(F, FMT, ...)                                         \
+  do {                                                               \
+    if (LOGGABLE(kLogDebug)) {                                       \
+      fdebugf(kLogDebug, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \
+    }                                                                \
+  } while (0)
+
+#define VFVERBOSEF(F, FMT, VA)                                 \
+  do {                                                         \
+    if (LOGGABLE(kLogVerbose)) {                               \
+      vfverbosef(kLogVerbose, __FILE__, __LINE__, F, FMT, VA); \
+    }                                                          \
+  } while (0)
+
+#define VFDEBUGF(F, FMT, VA)                               \
+  do {                                                     \
+    if (LOGGABLE(kLogDebug)) {                             \
+      vfdebugf(kLogDebug, __FILE__, __LINE__, F, FMT, VA); \
+    }                                                      \
+  } while (0)
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § liblog » on error resume next                             ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define LOGIFNEG1(FORM)                                 \
+  ({                                                    \
+    autotype(FORM) Ax = (FORM);                         \
+    if (Ax == (typeof(Ax))(-1) && LOGGABLE(kLogWarn)) { \
+      __logerrno(__FILE__, __LINE__, #FORM);            \
+    }                                                   \
+    Ax;                                                 \
+  })
+
+#define LOGIFNULL(FORM)                      \
+  ({                                         \
+    autotype(FORM) Ax = (FORM);              \
+    if (Ax == NULL && LOGGABLE(kLogWarn)) {  \
+      __logerrno(__FILE__, __LINE__, #FORM); \
+    }                                        \
+    Ax;                                      \
+  })
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § liblog » implementation details                           ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+void __logerrno(const char *, int, const char *) relegated;
+
+#define ARGS  unsigned, const char *, int, FILE *, const char *
+#define ATTR  paramsnonnull((5)) printfesque(5)
+#define ATTRV paramsnonnull((5, 6))
+void flogf(ARGS, ...) ATTR libcesque;
+void vflogf(ARGS, va_list) ATTRV libcesque;
+void fverbosef(ARGS, ...) asm("flogf") ATTR relegated libcesque;
+void vfverbosef(ARGS, va_list) asm("vflogf") ATTRV relegated libcesque;
+void fdebugf(ARGS, ...) asm("flogf") ATTR relegated libcesque;
+void vfdebugf(ARGS, va_list) asm("vflogf") ATTRV relegated libcesque;
+void ffatalf(ARGS, ...) asm("flogf") ATTR relegated wontreturn libcesque;
+void vffatalf(ARGS, va_list) asm("vflogf") ATTRV relegated wontreturn libcesque;
+#undef ARGS
+#undef ATTR
+#undef ATTRV
+
+#endif /* __STRICT_ANSI__ */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/mem/alloca.h */
+
+#define COSMOPOLITAN_LIBC_MEM_ALLOCA_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define alloca(size) __builtin_alloca(size)
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/mem/fmt.h */
+
+#define COSMOPOLITAN_LIBC_MEM_FMT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int asprintf(char **, const char *, ...) printfesque(2)
+    paramsnonnull((1, 2)) libcesque;
+int vasprintf(char **, const char *, va_list) paramsnonnull() libcesque;
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define asprintf(SP, FMT, ...) (asprintf)(SP, PFLINK(FMT), ##__VA_ARGS__)
+#define vasprintf(SP, FMT, VA) (vasprintf)(SP, PFLINK(FMT), VA)
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/bench.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_BENCH_H_
+
+
+/*!BEGIN libc/nexgen32e/rdtsc.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_RDTSC_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/**
+ * Reads CPU timestamp counter.
+ *
+ * This macro inhibits compiler magic.
+ * This macro does not inhibit CPU magic.
+ *
+ * @see X86_HAVE(INVTSC)
+ */
+#define rdtsc() __RDTSC("rdtsc")
+
+/**
+ * Reads CPU timestamp counter w/ full serialization.
+ *
+ * This macro inhibits CPU magic.
+ * This macro inhibits compiler magic.
+ *
+ * The clock isn't read until:
+ *
+ *   1. previous instructions finish executing; and
+ *   2. previous loads are globally visible; and
+ *   3. previous stores are globally visible.
+ *
+ * Later instructions won't dispatch until RDTSC completes.
+ *
+ * @see X86_HAVE(INVTSC)
+ */
+#define mfence_lfence_rdtsc_lfence() \
+  __RDTSC("mfence\n\tlfence\n\trdtsc\n\tlfence")
+
+#define __RDTSC(ASM)                                                       \
+  ({                                                                       \
+    uint64_t Rax, Rdx;                                                     \
+    asm volatile(ASM : "=a"(Rax), "=d"(Rdx) : /* no inputs */ : "memory"); \
+    Rdx << 32 | Rax;                                                       \
+  })
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+/**
+ * @fileoverview NexGen32e Microbenchmarking.
+ *
+ * @see X86_HAVE(INVTSC)
+ * @see libc/testlib/bench.h
+ */
+
+#define __startbench()                            \
+  ({                                              \
+    uint64_t Ticks;                               \
+    asm volatile("lfence\n\t"                     \
+                 "push\t%%rbx\n\t"                \
+                 "cpuid\n\t"                      \
+                 "pop\t%%rbx\n\t"                 \
+                 "rdtsc\n\t"                      \
+                 "shl\t%2,%%rdx\n\t"              \
+                 "or\t%%rdx,%0"                   \
+                 : "=a"(Ticks)                    \
+                 : "0"(0), "J"(32)                \
+                 : "rcx", "rdx", "memory", "cc"); \
+    Ticks;                                        \
+  })
+
+#define __endbench()                                     \
+  ({                                                     \
+    uint64_t Ticks;                                      \
+    asm volatile("rdtscp\n\t"                            \
+                 "shl\t%1,%%rdx\n\t"                     \
+                 "or\t%%rdx,%%rax\n\t"                   \
+                 "mov\t%%rax,%0\n\t"                     \
+                 "xor\t%%eax,%%eax\n\t"                  \
+                 "push\t%%rbx\n\t"                       \
+                 "cpuid\n\t"                             \
+                 "pop\t%%rbx"                            \
+                 : "=r"(Ticks)                           \
+                 : "J"(32)                               \
+                 : "rax", "rcx", "rdx", "memory", "cc"); \
+    Ticks;                                               \
+  })
+
+#define __startbench_m() mfence_lfence_rdtsc_lfence()
+#define __endbench_m()   __startbench_m()
+#define __marker()       asm("nop")
+#define __ordered()      asm volatile("" ::: "memory")
+#define __fakeread(X)    asm volatile("" : /* no outputs */ : "g"(X))
+#define __fakereadwrite(X)                 \
+  ({                                       \
+    autotype(X) Res = (X);                 \
+    asm volatile("" : "=g"(Res) : "0"(X)); \
+    Res;                                   \
+  })
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/bsf.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_BSF_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/*
+ * BIT SCANNING 101
+ *                          ctz(𝑥)         31^clz(𝑥)   clz(𝑥)
+ *      uint32 𝑥   bsf(𝑥) tzcnt(𝑥)   ffs(𝑥)   bsr(𝑥) lzcnt(𝑥)
+ *    0x00000000      wut       32        0      wut       32
+ *    0x00000001        0        0        1        0       31
+ *    0x80000001        0        0        1       31        0
+ *    0x80000000       31       31       32       31        0
+ *    0x00000010        4        4        5        4       27
+ *    0x08000010        4        4        5       27        4
+ *    0x08000000       27       27       28       27        4
+ *    0xffffffff        0        0        1       31        0
+ */
+
+int bsf(int);
+int bsfl(long);
+int bsfll(long long);
+int bsfmax(uintmax_t);
+
+#ifdef __GNUC__
+#define bsf(u)   __builtin_ctz(u)
+#define bsfl(u)  __builtin_ctzl(u)
+#define bsfll(u) __builtin_ctzll(u)
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/bsr.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_BSR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/*
+ * BIT SCANNING 101
+ *                          ctz(𝑥)         31^clz(𝑥)   clz(𝑥)
+ *      uint32 𝑥   bsf(𝑥) tzcnt(𝑥)   ffs(𝑥)   bsr(𝑥) lzcnt(𝑥)
+ *    0x00000000      wut       32        0      wut       32
+ *    0x00000001        0        0        1        0       31
+ *    0x80000001        0        0        1       31        0
+ *    0x80000000       31       31       32       31        0
+ *    0x00000010        4        4        5        4       27
+ *    0x08000010        4        4        5       27        4
+ *    0x08000000       27       27       28       27        4
+ *    0xffffffff        0        0        1       31        0
+ */
+
+int bsr(int);
+int bsrl(long);
+int bsrll(long long);
+int bsrmax(uintmax_t);
+
+#ifdef __GNUC__
+#define bsr(u)   ((sizeof(int) * 8 - 1) ^ __builtin_clz(u))
+#define bsrl(u)  ((sizeof(long) * 8 - 1) ^ __builtin_clzl(u))
+#define bsrll(u) ((sizeof(long long) * 8 - 1) ^ __builtin_clzll(u))
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/cachesize.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_CACHESIZE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#define kCpuCacheTypeData        1
+#define kCpuCacheTypeInstruction 2
+#define kCpuCacheTypeUnified     3
+
+unsigned getcachesize(int, int);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/crc32.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_CRC32_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void crc32init(uint32_t[hasatleast 256], uint32_t);
+uint32_t crc32_z(uint32_t, const void *, size_t);
+extern uint32_t (*const crc32c)(uint32_t, const void *, size_t);
+uint32_t crc32c_pure(uint32_t, const void *, size_t) strlenesque hidden;
+uint32_t crc32c_sse42(uint32_t, const void *, size_t) strlenesque hidden;
+uint32_t crc32_pclmul(uint32_t, const void *, size_t) hidden;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/ffs.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_FFS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/*
+ * BIT SCANNING 101
+ *                          ctz(𝑥)         31^clz(𝑥)   clz(𝑥)
+ *      uint32 𝑥   bsf(𝑥) tzcnt(𝑥)   ffs(𝑥)   bsr(𝑥) lzcnt(𝑥)
+ *    0x00000000      wut       32        0      wut       32
+ *    0x00000001        0        0        1        0       31
+ *    0x80000001        0        0        1       31        0
+ *    0x80000000       31       31       32       31        0
+ *    0x00000010        4        4        5        4       27
+ *    0x08000010        4        4        5       27        4
+ *    0x08000000       27       27       28       27        4
+ *    0xffffffff        0        0        1       31        0
+ */
+
+int ffs(int) pureconst;
+int ffsl(long) pureconst;
+int ffsll(long long) pureconst;
+
+#ifdef __GNUC__
+#define ffs(u)   __builtin_ffs(u)
+#define ffsl(u)  __builtin_ffsl(u)
+#define ffsll(u) __builtin_ffsll(u)
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/kompressor.h */
+
+#define COSMOPOLITAN_LIBC_KOMPRESSOR_KOMPRESSOR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+#if 0
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § standard library » compression                            ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+#endif
+
+struct RlDecode {
+  uint8_t repititions;
+  uint8_t byte;
+};
+
+void rldecode(void *dest, const struct RlDecode *) hidden;
+const uint8_t *lz4check(const void *data) hidden;
+void *lz4cpy(void *dest, const void *blockdata, size_t blocksize) hidden;
+void *lz4decode(void *dest, const void *src) hidden;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/lz4.h */
+
+#define COSMOPOLITAN_LIBC_LZ4_H_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § lz4                                                       ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+  LZ4 is a framing format for REP MOVSB designed by Yann Collet.
+
+  @see https://github.com/lz4/lz4/blob/master/doc/lz4_Frame_format.md
+  @see https://github.com/lz4/lz4/blob/master/doc/lz4_Block_format.md
+  @see http://ticki.github.io/blog/how-lz4-works/ */
+
+#define LZ4_EOF                0
+#define LZ4_VERSION            1
+#define LZ4_MAGICNUMBER        0x184D2204
+#define LZ4_SKIPPABLE0         0x184D2A50
+#define LZ4_SKIPPABLEMASK      0xFFFFFFF0
+#define LZ4_MAXHEADERSIZE      (MAGICNUMBER_SIZE + 2 + 8 + 4 + 1)
+#define LZ4_BLOCKMAXSIZE_64KB  4
+#define LZ4_BLOCKMAXSIZE_256KB 5
+#define LZ4_BLOCKMAXSIZE_1MB   6
+#define LZ4_BLOCKMAXSIZE_4MB   7
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § lz4 » frames                                              ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define LZ4_MAGIC(FRAME)                      READ32LE(FRAME)
+#define LZ4_FRAME_VERSION(FRAME)              ((_LZ4_FRAME_FLG(FRAME) >> 6) & 3)
+#define LZ4_FRAME_BLOCKINDEPENDENCE(FRAME)    ((_LZ4_FRAME_FLG(FRAME) >> 5) & 1)
+#define LZ4_FRAME_BLOCKCHECKSUMFLAG(FRAME)    ((_LZ4_FRAME_FLG(FRAME) >> 4) & 1)
+#define LZ4_FRAME_BLOCKCONTENTSIZEFLAG(FRAME) ((_LZ4_FRAME_FLG(FRAME) >> 3) & 1)
+#define LZ4_FRAME_BLOCKCONTENTCHECKSUMFLAG(FRAME) \
+  ((_LZ4_FRAME_FLG(FRAME) >> 2) & 1)
+#define LZ4_FRAME_DICTIONARYIDFLAG(FRAME) ((_LZ4_FRAME_FLG(FRAME) >> 0) & 1)
+#define LZ4_FRAME_BLOCKMAXSIZE(FRAME)     ((_LZ4_FRAME_BD(FRAME) >> 4) & 7)
+#define LZ4_FRAME_RESERVED1(FRAME)        ((_LZ4_FRAME_FLG(FRAME) >> 1) & 1)
+#define LZ4_FRAME_RESERVED2(FRAME)        ((_LZ4_FRAME_BD(FRAME) >> 7) & 1)
+#define LZ4_FRAME_RESERVED3(FRAME)        ((_LZ4_FRAME_BD(FRAME) >> 0) & 15)
+#define LZ4_FRAME_BLOCKCONTENTSIZE(FRAME) \
+  (LZ4_FRAME_BLOCKCONTENTSIZEFLAG(FRAME) ? READ64LE((FRAME) + 4 + 1 + 1) : 0)
+#define LZ4_FRAME_DICTIONARYID(FRAME)                          \
+  (LZ4_FRAME_DICTIONARYIDFLAG(FRAME)                           \
+       ? READ32LE(((FRAME) + 4 + 1 + 1 +                       \
+                   8 * LZ4_FRAME_BLOCKCONTENTSIZEFLAG(FRAME))) \
+       : 0)
+#define LZ4_FRAME_HEADERCHECKSUM(FRAME)                                \
+  (*((FRAME) + 4 + 1 + 1 + 8 * LZ4_FRAME_BLOCKCONTENTSIZEFLAG(FRAME) + \
+     4 * LZ4_FRAME_DICTIONARYIDFLAG(FRAME)))
+#define LZ4_FRAME_HEADERSIZE(FRAME)                        \
+  (4 + 1 + 1 + 8 * LZ4_FRAME_BLOCKCONTENTSIZEFLAG(FRAME) + \
+   4 * LZ4_FRAME_DICTIONARYIDFLAG(FRAME) + 1)
+#define _LZ4_FRAME_FLG(FRAME) (*((FRAME) + 4))
+#define _LZ4_FRAME_BD(FRAME)  (*((FRAME) + 5))
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § lz4 » blocks                                              ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define LZ4_BLOCK_DATA(block)         (block + sizeof(uint32_t))
+#define LZ4_BLOCK_DATASIZE(block)     (READ32LE(block) & 0x7fffffff)
+#define LZ4_BLOCK_ISEOF(block)        (READ32LE(block) == LZ4_EOF)
+#define LZ4_BLOCK_ISCOMPRESSED(block) ((READ32LE(block) & 0x80000000) == 0)
+#define LZ4_BLOCK_SIZE(frame, block)              \
+  (sizeof(uint32_t) + LZ4_BLOCK_DATASIZE(block) + \
+   (LZ4_FRAME_BLOCKCHECKSUMFLAG(frame) ? sizeof(uint8_t) : 0))
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/lzcnt.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_LZCNT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+unsigned lzcnt(unsigned) libcesque pureconst;
+unsigned long lzcntl(unsigned long) libcesque pureconst;
+
+#define lzcnt(X)                                           \
+  ({                                                       \
+    typeof(X) Res;                                         \
+    if (X86_HAVE(ABM)) {                                   \
+      /* amd piledriver+ (a.k.a. bdver1) c. 2011 */        \
+      /* intel haswell+ c. 2013 */                         \
+      asm("lzcnt\t%1,%0" : "=r,r"(Res) : "r,m"(X) : "cc"); \
+    } else {                                               \
+      Res = (lzcnt)(X);                                    \
+    }                                                      \
+    Res;                                                   \
+  })
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/macros.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_MACROS_H_
+#ifdef __ASSEMBLER__
+#else
+
+/* let's give auto-import tooling a helping hand */
+#define pbroadcastb pbroadcastb
+
+#endif /* __ASSEMBLER__ */
+
+
+/*!BEGIN libc/nexgen32e/msr.h */
+
+#define COSMOPOLITAN_LIBC_MSR_H_
+/*─────────────────────────────────────────────────────────────────────────────╗
+│ cosmopolitan § model specific registers                                      │
+╚─────────────────────────────────────────────────────────────────────────────*/
+
+#define MSR_P5_TSC 0x10       /* time stamp register */
+#define MSR_P5_CESR 0x11      /* control and event select register */
+#define MSR_P5_CTR0 0x12      /* counter #0 */
+#define MSR_P5_CTR1 0x13      /* counter #1 */
+#define MSR_P5_CESR_PC 0x0200 /* pin control */
+#define MSR_P5_CESR_CC 0x01C0 /* counter control mask */
+#define MSR_P5_CESR_ES 0x003F /* event control mask */
+#define MSR_P5_CESR_SHIFT 16  /* shift to get counter 1 */
+#define MSR_P5_CESR_MASK      /* mask Counter */ \
+  (MSR_P5_CESR_PC | MSR_P5_CESR_CC | MSR_P5_CESR_ES)
+
+#define MSR_CORE_THREAD_COUNT 0x35
+#define MSR_FLEX_RATIO 0x194
+#define MSR_IA32_APERF 0xE8
+#define MSR_IA32_APIC_BASE 0x1b
+#define MSR_IA32_APIC_BASE_BASE (0xfffff << 12)
+#define MSR_IA32_APIC_BASE_BSP (1 << 8)
+#define MSR_IA32_APIC_BASE_ENABLE (1 << 11)
+#define MSR_IA32_APIC_BASE_EXTENDED (1 << 10)
+#define MSR_IA32_BBL_CR_CTL 0x119
+#define MSR_IA32_BIOS_SIGN_ID 0x8b
+#define MSR_IA32_CLOCK_MODULATION 0x19a
+#define MSR_IA32_CORE_C3_RESIDENCY 0x3FC
+#define MSR_IA32_CORE_C6_RESIDENCY 0x3FD
+#define MSR_IA32_CORE_C7_RESIDENCY 0x3FE
+#define MSR_IA32_CR_PAT 0x277
+#define MSR_IA32_CSTAR 0xC0000083
+#define MSR_IA32_DDR_ENERGY_STATUS 0x619
+#define MSR_IA32_DEBUGCTLMSR 0x1d9
+#define MSR_IA32_DS_AREA 0x600
+#define MSR_IA32_EBL_CR_POWERON 0x2a
+#define MSR_IA32_EFER 0xC0000080
+#define MSR_IA32_EFER_LMA 0x00000400
+#define MSR_IA32_EFER_LME 0x00000100
+#define MSR_IA32_EFER_NXE 0x00000800
+#define MSR_IA32_EFER_SCE 0x00000001
+#define MSR_IA32_EVNTSEL0 0x186
+#define MSR_IA32_EVNTSEL1 0x187
+#define MSR_IA32_EVNTSEL2 0x188
+#define MSR_IA32_EVNTSEL3 0x189
+#define MSR_IA32_FEATCTL_CSTATE_SMI (1 << 16)
+#define MSR_IA32_FEATCTL_LOCK (1 << 0)
+#define MSR_IA32_FEATCTL_VMXON (1 << 2)
+#define MSR_IA32_FEATCTL_VMXON_SMX (1 << 1)
+#define MSR_IA32_FEATURE_CONTROL 0x3a
+#define MSR_IA32_FMASK 0xC0000084
+#define MSR_IA32_FS_BASE 0xC0000100
+#define MSR_IA32_GS_BASE 0xC0000101
+#define MSR_IA32_GS_BASE_KERNEL 0xC0000102
+#define MSR_IA32_GT_PERF_LIMIT_REASONS 0x6B0
+#define MSR_IA32_IA_PERF_LIMIT_REASONS 0x690
+#define MSR_IA32_IA_PERF_LIMIT_REASONS_SKL 0x64F
+#define MSR_IA32_LASTBRANCHFROMIP 0x1db
+#define MSR_IA32_LASTBRANCHTOIP 0x1dc
+#define MSR_IA32_LASTINTFROMIP 0x1dd
+#define MSR_IA32_LASTINTTOIP 0x1de
+#define MSR_IA32_LLC_FLUSHED_RESIDENCY_TIMER 0x61D
+#define MSR_IA32_LSTAR 0xC0000082
+#define MSR_IA32_MC0_ADDR 0x402
+#define MSR_IA32_MC0_CTL 0x400
+#define MSR_IA32_MC0_MISC 0x403
+#define MSR_IA32_MC0_STATUS 0x401
+#define MSR_IA32_MCG_CAP 0x179
+#define MSR_IA32_MCG_CTL 0x17b
+#define MSR_IA32_MCG_STATUS 0x17a
+#define MSR_IA32_MISC_ENABLE 0x1a0
+#define MSR_IA32_MPERF 0xE7
+#define MSR_IA32_MTRRCAP 0xfe
+#define MSR_IA32_MTRR_DEF_TYPE 0x2ff
+#define MSR_IA32_MTRR_FIX16K_80000 0x258
+#define MSR_IA32_MTRR_FIX16K_A0000 0x259
+#define MSR_IA32_MTRR_FIX4K_C0000 0x268
+#define MSR_IA32_MTRR_FIX4K_C8000 0x269
+#define MSR_IA32_MTRR_FIX4K_D0000 0x26a
+#define MSR_IA32_MTRR_FIX4K_D8000 0x26b
+#define MSR_IA32_MTRR_FIX4K_E0000 0x26c
+#define MSR_IA32_MTRR_FIX4K_E8000 0x26d
+#define MSR_IA32_MTRR_FIX4K_F0000 0x26e
+#define MSR_IA32_MTRR_FIX4K_F8000 0x26f
+#define MSR_IA32_MTRR_FIX64K_00000 0x250
+#define MSR_IA32_MTRR_PHYSBASE(n) (0x200 + 2 * (n))
+#define MSR_IA32_MTRR_PHYSMASK(n) (0x200 + 2 * (n) + 1)
+#define MSR_IA32_P5_MC_ADDR 0
+#define MSR_IA32_P5_MC_TYPE 1
+#define MSR_IA32_PACKAGE_THERM_INTERRUPT 0x1b2
+#define MSR_IA32_PACKAGE_THERM_STATUS 0x1b1
+#define MSR_IA32_PERFCTR0 0xc1
+#define MSR_IA32_PERFCTR1 0xc2
+#define MSR_IA32_PERFCTR3 0xc3
+#define MSR_IA32_PERFCTR4 0xc4
+#define MSR_IA32_PERF_CTL 0x199
+#define MSR_IA32_PERF_FIXED_CTR0 0x309
+#define MSR_IA32_PERF_FIXED_CTR_CTRL 0x38D
+#define MSR_IA32_PERF_GLOBAL_CTRL 0x38F
+#define MSR_IA32_PERF_GLOBAL_OVF_CTRL 0x390
+#define MSR_IA32_PERF_GLOBAL_STATUS 0x38E
+#define MSR_IA32_PERF_STS 0x198
+#define MSR_IA32_PKG_C10_RESIDENCY 0x632
+#define MSR_IA32_PKG_C2_RESIDENCY 0x60D
+#define MSR_IA32_PKG_C3_RESIDENCY 0x3F8
+#define MSR_IA32_PKG_C6_RESIDENCY 0x3F9
+#define MSR_IA32_PKG_C7_RESIDENCY 0x3FA
+#define MSR_IA32_PKG_C8_RESIDENCY 0x630
+#define MSR_IA32_PKG_C9_RESIDENCY 0x631
+#define MSR_IA32_PKG_ENERGY_STATUS 0x611
+#define MSR_IA32_PKG_POWER_SKU_UNIT 0x606
+#define MSR_IA32_PLATFORM_ID 0x17
+#define MSR_IA32_PP0_ENERGY_STATUS 0x639
+#define MSR_IA32_PP1_ENERGY_STATUS 0x641
+#define MSR_IA32_RING_PERF_STATUS 0x621
+#define MSR_IA32_STAR 0xC0000081
+#define MSR_IA32_SYSENTER_CS 0x174
+#define MSR_IA32_SYSENTER_EIP 0x176
+#define MSR_IA32_SYSENTER_ESP 0x175
+#define MSR_IA32_TSC_AUX 0xC0000103
+#define MSR_IA32_TSC_DEADLINE 0x6e0
+#define MSR_IA32_UCODE_REV MSR_IA32_BIOS_SIGN_ID
+#define MSR_IA32_UCODE_WRITE MSR_IA32_UPDT_TRIG
+#define MSR_IA32_UPDT_TRIG 0x79
+#define MSR_IA32_VMX_BASE 0x480
+#define MSR_IA32_VMX_BASIC MSR_IA32_VMX_BASE
+#define MSR_IA32_VMX_CR0_FIXED0 MSR_IA32_VMX_BASE + 6
+#define MSR_IA32_VMX_CR0_FIXED1 MSR_IA32_VMX_BASE + 7
+#define MSR_IA32_VMX_CR4_FIXED0 MSR_IA32_VMX_BASE + 8
+#define MSR_IA32_VMX_CR4_FIXED1 MSR_IA32_VMX_BASE + 9
+#define MSR_IA32_VMX_ENTRY_CTLS MSR_IA32_VMX_BASE + 4
+#define MSR_IA32_VMX_EPT_VPID_CAP MSR_IA32_VMX_BASE + 12
+#define MSR_IA32_VMX_EPT_VPID_CAP_AD_SHIFT 21
+#define MSR_IA32_VMX_EXIT_CTLS MSR_IA32_VMX_BASE + 3
+#define MSR_IA32_VMX_MISC MSR_IA32_VMX_BASE + 5
+#define MSR_IA32_VMX_PINBASED_CTLS MSR_IA32_VMX_BASE + 1
+#define MSR_IA32_VMX_PROCBASED_CTLS MSR_IA32_VMX_BASE + 2
+#define MSR_IA32_VMX_PROCBASED_CTLS2 MSR_IA32_VMX_BASE + 11
+#define MSR_IA32_VMX_TRUE_PINBASED_CTLS MSR_IA32_VMX_BASE + 13
+#define MSR_IA32_VMX_TRUE_PROCBASED_CTLS MSR_IA32_VMX_BASE + 14
+#define MSR_IA32_VMX_TRUE_VMENTRY_CTLS MSR_IA32_VMX_BASE + 16
+#define MSR_IA32_VMX_TRUE_VMEXIT_CTLS MSR_IA32_VMX_BASE + 15
+#define MSR_IA32_VMX_VMCS_ENUM MSR_IA32_VMX_BASE + 10
+#define MSR_IA32_VMX_VMFUNC MSR_IA32_VMX_BASE + 17
+#define MSR_P5_CESR_CC_CLOCK 0x0100   /* Clock Counting (otherwise Event) */
+#define MSR_P5_CESR_CC_CPL 0x00C0     /* Count regardless of the CPL */
+#define MSR_P5_CESR_CC_CPL012 0x0040  /* Count if the CPL == 0, 1, 2 */
+#define MSR_P5_CESR_CC_CPL3 0x0080    /* Count if the CPL == 3 */
+#define MSR_P5_CESR_CC_DISABLE 0x0000 /* Disable counter */
+#define MSR_P5_CESR_ES_AGI 0x011111   /* Stall because of AGI */
+#define MSR_P5_CESR_ES_BANK_CONFLICTS 0x001010  /* Bank conflicts */
+#define MSR_P5_CESR_ES_BRANCHE 0x010010         /* Branches */
+#define MSR_P5_CESR_ES_BRANCHE_BTB 0x010100     /* Taken branch or BTB Hit */
+#define MSR_P5_CESR_ES_BREAK_DR0 0x100011       /* Breakpoint matches on DR0 */
+#define MSR_P5_CESR_ES_BREAK_DR1 0x100100       /* Breakpoint matches on DR1 */
+#define MSR_P5_CESR_ES_BREAK_DR2 0x100101       /* Breakpoint matches on DR2 */
+#define MSR_P5_CESR_ES_BREAK_DR3 0x100110       /* Breakpoint matches on DR3 */
+#define MSR_P5_CESR_ES_BTB_HIT 0x010011         /* BTB Hits */
+#define MSR_P5_CESR_ES_BUS_CYCLE 0x011000       /* Clocks while bus cycle */
+#define MSR_P5_CESR_ES_CACHE_SNOOP_HIT 0x001000 /* Data cache snoop hits */
+#define MSR_P5_CESR_ES_CODE_CACHE_MISS 0x001110 /* Code Cache miss */
+#define MSR_P5_CESR_ES_CODE_READ 0x001100       /* Code Read */
+#define MSR_P5_CESR_ES_CODE_TLB_MISS 0x001101   /* Code TLB miss */
+#define MSR_P5_CESR_ES_DATA_CACHE_WB 0x000110   /* Cache lines written back */
+#define MSR_P5_CESR_ES_DATA_MEM_READ 0x011010   /* Pipeline waiting for read */
+#define MSR_P5_CESR_ES_DATA_READ 0x000000       /* Data Read */
+#define MSR_P5_CESR_ES_DATA_READ_MISS 0x000011  /* Data Read Miss */
+#define MSR_P5_CESR_ES_DATA_RW 0x101000         /* Data Read or Write */
+#define MSR_P5_CESR_ES_DATA_RW_MISS 0x101001    /* Data Read or Write Miss */
+#define MSR_P5_CESR_ES_DATA_TLB_MISS 0x000010   /* Data TLB Miss */
+#define MSR_P5_CESR_ES_DATA_WRITE 0x000001      /* Data Write */
+#define MSR_P5_CESR_ES_DATA_WRITE_MISS 0x000100 /* Data Write Miss */
+#define MSR_P5_CESR_ES_EXTERNAL_SNOOP 0x000111  /* External Snoop */
+#define MSR_P5_CESR_ES_FLOP 0x100010            /* Floating Point operations */
+#define MSR_P5_CESR_ES_FULL_WRITE_BUF 0x011001  /* Clocks while full wrt buf */
+#define MSR_P5_CESR_ES_HARDWARE_IT 0x100111     /* Hardware interrupts */
+#define MSR_P5_CESR_ES_HIT_EM 0x000101          /* Write (hit) to M|E state */
+#define MSR_P5_CESR_ES_INSTRUCTION 0x010110     /* Instruction executed */
+#define MSR_P5_CESR_ES_INSTRUCTION_V 0x010111   /* Inst. executed (v-pipe) */
+#define MSR_P5_CESR_ES_IO_CYCLE 0x011101        /* I/O Read or Write cycles */
+#define MSR_P5_CESR_ES_LOCKED_CYCLE 0x011100    /* Locked bus cycles */
+#define MSR_P5_CESR_ES_MEM_ACCESS_PIPE 0x001001 /* mem access both pipes */
+#define MSR_P5_CESR_ES_MISALIGNED 0x001011      /* Misaligned Memory or I/O */
+#define MSR_P5_CESR_ES_NON_CACHEABLE 0x011110   /* Non-cacheable Mem. read */
+#define MSR_P5_CESR_ES_PIPELINE_FLUSH 0x010101  /* Pipeline Flushes */
+#define MSR_P5_CESR_ES_SEGMENT_LOADED 0x001111  /* Any segment reg. loaded */
+#define MSR_P5_CESR_ES_WRITE_EM 0x011011        /* Stall on write E|M state */
+#define MSR_PLATFORM_INFO 0xce
+
+
+
+/*!BEGIN libc/nexgen32e/nexgen32e.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_NEXGEN32E_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern long kHalfCache3;
+
+void imapxlatab(void *);
+void insertionsort(int32_t *, size_t);
+
+int64_t div10int64(int64_t) libcesque pureconst;
+int64_t div100int64(int64_t) libcesque pureconst;
+int64_t div1000int64(int64_t) libcesque pureconst;
+int64_t div10000int64(int64_t) libcesque pureconst;
+int64_t div1000000int64(int64_t) libcesque pureconst;
+int64_t div1000000000int64(int64_t) libcesque pureconst;
+
+int64_t rem10int64(int64_t) libcesque pureconst;
+int64_t rem100int64(int64_t) libcesque pureconst;
+int64_t rem1000int64(int64_t) libcesque pureconst;
+int64_t rem10000int64(int64_t) libcesque pureconst;
+int64_t rem1000000int64(int64_t) libcesque pureconst;
+int64_t rem1000000000int64(int64_t) libcesque pureconst;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/nt2sysv.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_NT2SYSV_H_
+
+
+/*!BEGIN libc/nexgen32e/trampoline.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_TRAMPOLINE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define TRAMPOLINE(FUNCTION, THUNK)   \
+  ({                                  \
+    typeof(FUNCTION) *Tramp;          \
+    asm(".section .text.trampoline\n" \
+        "183:\n\t"                    \
+        "mov\t%1,%%eax\n\t"           \
+        "jmp\t" #THUNK "\n\t"         \
+        ".previous\n\t"               \
+        "mov\t$183b,%k0"              \
+        : "=r"(Tramp)                 \
+        : "i"(FUNCTION));             \
+    Tramp;                            \
+  })
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+/**
+ * Creates function to thunk FUNCTION from MSX64 to System V ABI.
+ *
+ * This macro should be used when specifying callbacks in the WIN32 API.
+ */
+#define NT2SYSV(FUNCTION) TRAMPOLINE(FUNCTION, __nt2sysv)
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/rdtscp.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_RDTSCP_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#define TSC_AUX_CORE(MSR) ((MSR)&0xfff)
+#define TSC_AUX_NODE(MSR) (((MSR) >> 12) & 0xfff)
+
+/**
+ * Reads CPU timestamp counter and IA32_TSC_AUX.
+ *
+ * This macro inhibits compiler magic.
+ * This macro does not inhibit CPU magic.
+ *
+ * @see X86_HAVE(RDTSCP)
+ */
+#define rdtscp(OPT_OUT_IA32_TSC_AUX)               \
+  ({                                               \
+    uint32_t Ecx, *EcxOut;                         \
+    uint64_t Rax, Rcx, Rdx;                        \
+    asm volatile("rdtscp"                          \
+                 : "=a"(Rax), "=c"(Ecx), "=d"(Rdx) \
+                 : /* no inputs */                 \
+                 : "memory");                      \
+    EcxOut = (OPT_OUT_IA32_TSC_AUX);               \
+    if (EcxOut) *EcxOut = Ecx;                     \
+    Rdx << 32 | Rax;                               \
+  })
+
+/**
+ * Reads timestamp counter auxiliary model specific register value.
+ */
+#define rdpid()                                                           \
+  ({                                                                      \
+    bool Ok;                                                              \
+    long Msr;                                                             \
+    Ok = false;                                                           \
+    if (X86_HAVE(RDPID)) {                                                \
+      asm volatile("rdpid\t%0" : "=r"(Msr) : /* no inputs */ : "memory"); \
+      Ok = true;                                                          \
+    } else if (IsLinux()) {                                               \
+      asm volatile(ZFLAG_ASM("lsl\t%2,%1")                                \
+                   : ZFLAG_CONSTRAINT(Ok), "=r"(Msr)                      \
+                   : "r"(0x7b)                                            \
+                   : "memory");                                           \
+    }                                                                     \
+    if (!Ok && X86_HAVE(RDTSCP)) {                                        \
+      asm volatile("rdtscp"                                               \
+                   : "=c"(Msr)                                            \
+                   : /* no inputs */                                      \
+                   : "eax", "edx", "memory");                             \
+      Ok = true;                                                          \
+    }                                                                     \
+    if (!Ok) {                                                            \
+      Msr = -1;                                                           \
+    }                                                                     \
+    Msr;                                                                  \
+  })
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/slowcall.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_SLOWCALL_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define slowcall(fn, arg1, arg2, arg3, arg4, arg5, arg6)                \
+  ({                                                                    \
+    void *ax;                                                           \
+    asm volatile("push\t%7\n\t"                                         \
+                 "push\t%6\n\t"                                         \
+                 "push\t%5\n\t"                                         \
+                 "push\t%4\n\t"                                         \
+                 "push\t%3\n\t"                                         \
+                 "push\t%2\n\t"                                         \
+                 "push\t%1\n\t"                                         \
+                 "call\tslowcall"                                       \
+                 : "=a"(ax)                                             \
+                 : "g"(fn), "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), \
+                   "g"(arg5), "g"(arg6)                                 \
+                 : "memory");                                           \
+    ax;                                                                 \
+  })
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/stackframe.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_STACKFRAME_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct StackFrame {
+  struct StackFrame *next;
+  intptr_t addr;
+};
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/tzcnt.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_TZCNT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+unsigned tzcnt(unsigned) libcesque pureconst;
+unsigned long tzcntl(unsigned long) libcesque pureconst;
+
+#define tzcnt(X)                                           \
+  ({                                                       \
+    typeof(X) Res;                                         \
+    if (X86_HAVE(BMI)) {                                   \
+      /* amd piledriver+ (a.k.a. bdver1) c. 2011 */        \
+      /* intel haswell+ c. 2013 */                         \
+      asm("tzcnt\t%1,%0" : "=r,r"(Res) : "r,m"(X) : "cc"); \
+    } else {                                               \
+      Res = (tzcnt)(X);                                    \
+    }                                                      \
+    Res;                                                   \
+  })
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nexgen32e/x86info.h */
+
+#define COSMOPOLITAN_LIBC_NEXGEN32E_X86INFO_H_
+
+#define kX86CpuStepping    ((KCPUIDS(1H, EAX) >> 0) & 15)
+#define kX86CpuModelid     ((KCPUIDS(1H, EAX) >> 4) & 15)
+#define kX86CpuFamilyid    ((KCPUIDS(1H, EAX) >> 8) & 15)
+#define kX86CpuType        ((KCPUIDS(1H, EAX) >> 12) & 3)
+#define kX86CpuExtmodelid  ((KCPUIDS(1H, EAX) >> 16) & 15)
+#define kX86CpuExtfamilyid ((KCPUIDS(1H, EAX) >> 20) & 255)
+
+#define kX86CpuFamily \
+  (kX86CpuFamilyid + (kX86CpuFamily == 15 ? kX86CpuExtfamilyid : 0))
+
+#define kX86CpuModel \
+  (kX86CpuModelid |  \
+   (kX86CpuFamily == 6 || kX86CpuFamily == 15 ? kX86CpuExtmodelid : 0) << 4)
+
+#define kX86ProcessorModelKey                                                 \
+  (kX86CpuExtfamilyid << 12 | kX86CpuFamilyid << 8 | kX86CpuExtmodelid << 4 | \
+   kX86CpuModelid)
+
+#define X86_MARCH_UNKNOWN        0
+#define X86_MARCH_CORE2          1
+#define X86_MARCH_NEHALEM        2
+#define X86_MARCH_WESTMERE       3
+#define X86_MARCH_SANDYBRIDGE    4
+#define X86_MARCH_IVYBRIDGE      5
+#define X86_MARCH_HASWELL        6
+#define X86_MARCH_BROADWELL      7
+#define X86_MARCH_SKYLAKE        8
+#define X86_MARCH_KABYLAKE       9
+#define X86_MARCH_CANNONLAKE     10
+#define X86_MARCH_ICELAKE        11
+#define X86_MARCH_TIGERLAKE      12
+#define X86_MARCH_BONNELL        13
+#define X86_MARCH_SALTWELL       14
+#define X86_MARCH_SILVERMONT     15
+#define X86_MARCH_AIRMONT        16
+#define X86_MARCH_GOLDMONT       17
+#define X86_MARCH_GOLDMONTPLUS   18
+#define X86_MARCH_TREMONT        19
+#define X86_MARCH_KNIGHTSLANDING 20
+#define X86_MARCH_KNIGHTSMILL    21
+
+#define X86_GRADE_UNKNOWN   0
+#define X86_GRADE_APPLIANCE 1
+#define X86_GRADE_MOBILE    2
+#define X86_GRADE_TABLET    3
+#define X86_GRADE_DESKTOP   4
+#define X86_GRADE_CLIENT    5
+#define X86_GRADE_DENSITY   6
+#define X86_GRADE_SERVER    7
+#define X86_GRADE_SCIENCE   8
+
+struct X86ProcessorModel {
+  short key;
+  unsigned char march;
+  unsigned char grade;
+};
+
+extern const size_t kX86ProcessorModelCount;
+extern const struct X86ProcessorModel kX86ProcessorModels[];
+
+const struct X86ProcessorModel *getx86processormodel(short) nosideeffect;
+
+
+
+/*!BEGIN libc/nt/enum/accessmask.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_ACCESSMASK_H_
+
+/**
+ * Can also be described as follows:
+ *
+ *   struct NtAccessMask {
+ *     union {
+ *       uint32_t value;
+ *       struct {
+ *         uint16_t SpecificRights;
+ *         unsigned char StandardRights;
+ *         unsigned AccessSystemAcl : 1;
+ *         unsigned Reserved : 3;
+ *         unsigned GenericAll : 1;
+ *         unsigned GenericExecute : 1;
+ *         unsigned GenericWrite : 1;
+ *         unsigned GenericRead : 1;
+ *       };
+ *     };
+ *   };
+ */
+#define kNtGenericRead 0x80000000u
+#define kNtGenericWrite 0x40000000u
+#define kNtGenericExecute 0x20000000u
+#define kNtGenericAll 0x10000000u
+#define kNtDelete 0x00010000u
+#define kNtReadControl 0x00020000u
+#define kNtWriteDac 0x00040000u
+#define kNtWriteOwner 0x00080000u
+#define kNtSynchronize 0x00100000u
+#define kNtStandardRightsRequired 0x000F0000u
+#define kNtStandardRightsRead kNtReadControl
+#define kNtStandardRightsWrite kNtReadControl
+#define kNtStandardRightsExecute kNtReadControl
+#define kNtStandardRightsAll 0x001F0000u
+#define kNtSpecificRightsAll 0x0000FFFFu
+#define kNtAccessSystemSecurity 0x01000000u
+#define kNtMaximumAllowed 0x02000000u
+#define kNtFileReadData 0x0001u
+#define kNtFileListDirectory 0x0001u
+#define kNtFileWriteData 0x0002u
+#define kNtFileAddFile 0x0002u
+#define kNtFileAppendData 0x0004u
+#define kNtFileAddSubdirectory 0x0004u
+#define kNtFileCreatePipeInstance 0x0004u
+#define kNtFileReadEa 0x0008u
+#define kNtFileWriteEa 0x0010u
+#define kNtFileExecute 0x0020u
+#define kNtFileTraverse 0x0020u
+#define kNtFileDeleteChild 0x0040u
+#define kNtFileReadAttributes 0x0080u
+#define kNtFileWriteAttributes 0x0100u
+#define kNtFileAllAccess (kNtStandardRightsRequired | kNtSynchronize | 0x1FFu)
+#define kNtFileGenericRead                                           \
+  (kNtStandardRightsRead | kNtFileReadData | kNtFileReadAttributes | \
+   kNtFileReadEa | kNtSynchronize)
+#define kNtFileGenericWrite                                             \
+  (kNtStandardRightsWrite | kNtFileWriteData | kNtFileWriteAttributes | \
+   kNtFileWriteEa | kNtFileAppendData | kNtSynchronize)
+#define kNtFileGenericExecute                                          \
+  (kNtStandardRightsExecute | kNtFileReadAttributes | kNtFileExecute | \
+   kNtSynchronize)
+#define kNtTokenAssignPrimary 0x0001u
+#define kNtTokenDuplicate 0x0002u
+#define kNtTokenImpersonate 0x0004u
+#define kNtTokenQuery 0x0008u
+#define kNtTokenQuerySource 0x0010u
+#define kNtTokenAdjustPrivileges 0x0020u
+#define kNtTokenAdjustGroups 0x0040u
+#define kNtTokenAdjustDefault 0x0080u
+#define kNtTokenAdjustSessionid 0x0100u
+#define kNtTokenAllAccessP                                                 \
+  (kNtStandardRightsRequired | kNtTokenAssignPrimary | kNtTokenDuplicate | \
+   kNtTokenImpersonate | kNtTokenQuery | kNtTokenQuerySource |             \
+   kNtTokenAdjustPrivileges | kNtTokenAdjustGroups | kNtTokenAdjustDefault)
+#define kNtTokenAllAccess kNtTokenAllAccessP | kNtTokenAdjustSessionid
+#define kNtTokenRead kNtStandardRightsRead | kNtTokenQuery
+#define kNtTokenWrite                                                         \
+  (kNtStandardRightsWrite | kNtTokenAdjustPrivileges | kNtTokenAdjustGroups | \
+   kNtTokenAdjustDefault)
+#define kNtTokenExecute kNtStandardRightsExecute
+#define kNtTokenTrustConstraintMask \
+  (kNtStandardRightsRead | kNtTokenQuery | kNtTokenQuerySource)
+#define kNtTokenAccessPseudoHandleWin8 kNtTokenQuery | kNtTokenQuerySource
+#define kNtTokenAccessPseudoHandle kNtTokenAccessPseudoHandleWin8
+
+
+
+/*!BEGIN libc/nt/enum/afd.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_AFD_H_
+
+#define kNtAfdPollReceive          0x0001
+#define kNtAfdPollReceiveExpedited 0x0002
+#define kNtAfdPollSend             0x0004
+#define kNtAfdPollDisconnect       0x0008
+#define kNtAfdPollAbort            0x0010
+#define kNtAfdPollLocalClose       0x0020
+#define kNtAfdPollAccept           0x0080
+#define kNtAfdPollConnectFail      0x0100
+
+
+
+/*!BEGIN libc/nt/enum/bitblt.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_BITBLT_H_
+
+#define kNtSrccopy     0x00CC0020u /* src */
+#define kNtSrcpaint    0x00EE0086u /* src | dst */
+#define kNtSrcand      0x008800C6u /* src & dst */
+#define kNtSrcinvert   0x00660046u /* src ^ dst */
+#define kNtSrcerase    0x00440328u /* src & ~dst */
+#define kNtNotsrccopy  0x00330008u /* ~src */
+#define kNtNotsrcerase 0x001100A6u /* ~src & ~dst */
+#define kNtMergecopy   0x00C000CAu /* (src & pattern) */
+#define kNtMergepaint  0x00BB0226u /* ~src | dst */
+#define kNtPatcopy     0x00F00021u /* pat */
+#define kNtPatpaint    0x00FB0A09u /* wut */
+#define kNtPatinvert   0x005A0049u /* pat ^ dst */
+#define kNtDstinvert   0x00550009u /* ~dst */
+#define kNtBlackness   0x00000042u /* black */
+#define kNtWhiteness   0x00FF0062u /* white */
+
+
+
+/*!BEGIN libc/nt/enum/callback.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_CALLBACK_H_
+
+#define kNtCallbackChunkFinished 0
+#define kNtCallbackStreamSwitch  1
+
+
+
+/*!BEGIN libc/nt/enum/color.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_COLOR_H_
+
+#define kNtColorScrollbar               0
+#define kNtColorBackground              1
+#define kNtColorActivecaption           2
+#define kNtColorInactivecaption         3
+#define kNtColorMenu                    4
+#define kNtColorWindow                  5
+#define kNtColorWindowframe             6
+#define kNtColorMenutext                7
+#define kNtColorWindowtext              8
+#define kNtColorCaptiontext             9
+#define kNtColorActiveborder            10
+#define kNtColorInactiveborder          11
+#define kNtColorAppworkspace            12
+#define kNtColorHighlight               13
+#define kNtColorHighlighttext           14
+#define kNtColorBtnface                 15
+#define kNtColorBtnshadow               16
+#define kNtColorGraytext                17
+#define kNtColorBtntext                 18
+#define kNtColorInactivecaptiontext     19
+#define kNtColorBtnhighlight            20
+#define kNtColor3ddkshadow              21
+#define kNtColor3dlight                 22
+#define kNtColorInfotext                23
+#define kNtColorInfobk                  24
+#define kNtColorHotlight                26
+#define kNtColorGradientactivecaption   27
+#define kNtColorGradientinactivecaption 28
+#define kNtColorMenuhilight             29
+#define kNtColorMenubar                 30
+
+
+
+/*!BEGIN libc/nt/enum/computernameformat.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_COMPUTERNAMEFORMAT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define kNtComputerNameNetBios                   0
+#define kNtComputerNameDnsHostname               1
+#define kNtComputerNameDnsDomain                 2
+#define kNtComputerNameDnsFullyQualified         3
+#define kNtComputerNamePhysicalNetBios           4
+#define kNtComputerNamePhysicalDnsHostname       5
+#define kNtComputerNamePhysicalDnsDomain         6
+#define kNtComputerNamePhysicalDnsFullyQualified 7
+#define kNtComputerName_MAX                      8
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/consolemodeflags.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_CONSOLEMODEFLAGS_H_
+
+/* input mode */
+#define kNtEnableProcessedInput 0x0001u
+#define kNtEnableLineInput 0x0002u
+#define kNtEnableEchoInput 0x0004u
+#define kNtEnableWindowInput 0x0008u
+#define kNtEnableMouseInput 0x0010u
+#define kNtEnableInsertMode 0x0020u
+#define kNtEnableQuickEditMode 0x0040u
+#define kNtEnableExtendedFlags 0x0080u
+#define kNtEnableAutoPosition 0x0100u
+#define kNtEnableVirtualTerminalInput 0x0200u
+
+/* output mode */
+#define kNtEnableProcessedOutput 0x0001u
+#define kNtEnableWrapAtEolOutput 0x0002u
+#define kNtEnableVirtualTerminalProcessing 0x0004u
+#define kNtDisableNewlineAutoReturn 0x0008u
+#define kNtEnableLvbGridWorldwide 0x0010u
+
+
+
+/*!BEGIN libc/nt/enum/consoleselectionflags.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_CONSOLESELECTIONFLAGS_H_
+
+#define kNtConsoleNoSelection 0x0000u
+#define kNtConsoleSelectionInProgress 0x0001u
+#define kNtConsoleSelectionNotEmpty 0x0002u
+#define kNtConsoleMouseSelection 0x0004u
+#define kNtConsoleMouseDown 0x0008u
+
+
+
+/*!BEGIN libc/nt/enum/copyfile.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_COPYFILE_H_
+
+#define kNtCopyFileFailIfExists              0x00000001
+#define kNtCopyFileRestartable               0x00000002
+#define kNtCopyFileOpenSourceForWrite        0x00000004
+#define kNtCopyFileAllowDecryptedDestination 0x00000008
+#define kNtCopyFileCopySymlink               0x00000800
+#define kNtCopyFileNoBuffering               0x00001000
+#define kNtCopyFileRequestSecurityPrivileges 0x00002000 /* Win8+ */
+#define kNtCopyFileResumeFromPause           0x00004000 /* Win8+ */
+#define kNtCopyFileRequestSecurityPrivileges 0x00002000 /* Win8+ */
+#define kNtCopyFileNoOffload                 0x00040000 /* Win8+ */
+#define kNtCopyFileIgnoreEdpBlock            0x00400000 /* Win10+ */
+#define kNtCopyFileIgnoreSourceEncryption    0x00800000 /* Win10+ */
+
+
+
+/*!BEGIN libc/nt/enum/creationdisposition.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_CREATIONDISPOSITION_H_
+
+#define kNtCreateNew 1
+#define kNtCreateAlways 2
+#define kNtOpenExisting 3
+#define kNtOpenAlways 4
+#define kNtTruncateExisting 5
+
+
+
+/*!BEGIN libc/nt/enum/cs.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_CS_H_
+
+#define kNtCsVredraw         0x00000001
+#define kNtCsHredraw         0x00000002
+#define kNtCsDblclks         0x00000008
+#define kNtCsOwndc           0x00000020
+#define kNtCsClassdc         0x00000040
+#define kNtCsParentdc        0x00000080
+#define kNtCsNoclose         0x00000200
+#define kNtCsSavebits        0x00000800
+#define kNtCsBytealignclient 0x00001000
+#define kNtCsBytealignwindow 0x00002000
+#define kNtCsGlobalclass     0x00004000
+#define kNtCsIme             0x00010000
+#define kNtCsDropshadow      0x00020000
+
+
+
+/*!BEGIN libc/nt/enum/ctrlevent.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_CTRLEVENT_H_
+
+#define kNtCtrlCEvent 0      /* SIGINT */
+#define kNtCtrlBreakEvent 1  /* SIGQUIT */
+#define kNtCtrlCloseEvent 2  /* SIGHUP */
+#define kNtCtrlLogoffEvent 5 /* SIGTERM */
+#define kNtCtrlShutdownEvent 6
+
+
+
+/*!BEGIN libc/nt/enum/cw.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_CW_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define kNtCwUsedefault ((int)0x80000000)
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/dialogresult.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_DIALOGRESULT_H_
+
+#define kNtIdok       1
+#define kNtIdcancel   2
+#define kNtIdabort    3
+#define kNtIdretry    4
+#define kNtIdignore   5
+#define kNtIdyes      6
+#define kNtIdno       7
+#define kNtIdclose    8
+#define kNtIdhelp     9
+#define kNtIdtryagain 10
+#define kNtIdcontinue 11
+
+
+
+/*!BEGIN libc/nt/enum/errormodeflags.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_ERRORMODEFLAGS_H_
+
+#define kNtErrorModeDefault      0x0
+#define kNtSemFailcriticalerrors 0x1
+#define kNtSemNogpfaulterrorbox  0x2
+#define kNtSemNoopenfileerrorbox 0x8000
+
+
+
+/*!BEGIN libc/nt/enum/event.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_EVENT_H_
+
+#define kNtEventSystemSound            0x0001
+#define kNtEventSystemAlert            0x0002
+#define kNtEventSystemForeground       0x0003
+#define kNtEventSystemMenustart        0x0004
+#define kNtEventSystemMenuend          0x0005
+#define kNtEventSystemMenupopupstart   0x0006
+#define kNtEventSystemMenupopupend     0x0007
+#define kNtEventSystemCapturestart     0x0008
+#define kNtEventSystemCaptureend       0x0009
+#define kNtEventSystemMovesizestart    0x000A
+#define kNtEventSystemMovesizeend      0x000B
+#define kNtEventSystemContexthelpstart 0x000C
+#define kNtEventSystemContexthelpend   0x000D
+#define kNtEventSystemDragdropstart    0x000E
+#define kNtEventSystemDragdropend      0x000F
+#define kNtEventSystemDialogstart      0x0010
+#define kNtEventSystemDialogend        0x0011
+#define kNtEventSystemScrollingstart   0x0012
+#define kNtEventSystemScrollingend     0x0013
+#define kNtEventSystemSwitchstart      0x0014
+#define kNtEventSystemSwitchend        0x0015
+#define kNtEventSystemMinimizestart    0x0016
+#define kNtEventSystemMinimizeend      0x0017
+
+#define kNtEventConsoleCaret            0x4001
+#define kNtEventConsoleUpdateRegion     0x4002
+#define kNtEventConsoleUpdateSimple     0x4003
+#define kNtEventConsoleUpdateScroll     0x4004
+#define kNtEventConsoleLayout           0x4005
+#define kNtEventConsoleStartApplication 0x4006
+#define kNtEventConsoleEndApplication   0x4007
+
+#define kNtEventObjectCreate            0x8000
+#define kNtEventObjectDestroy           0x8001
+#define kNtEventObjectShow              0x8002
+#define kNtEventObjectHide              0x8003
+#define kNtEventObjectReorder           0x8004
+#define kNtEventObjectFocus             0x8005
+#define kNtEventObjectSelection         0x8006
+#define kNtEventObjectSelectionadd      0x8007
+#define kNtEventObjectSelectionremove   0x8008
+#define kNtEventObjectSelectionwithin   0x8009
+#define kNtEventObjectStatechange       0x800A
+#define kNtEventObjectLocationchange    0x800B
+#define kNtEventObjectNamechange        0x800C
+#define kNtEventObjectDescriptionchange 0x800D
+#define kNtEventObjectValuechange       0x800E
+#define kNtEventObjectParentchange      0x800F
+#define kNtEventObjectHelpchange        0x8010
+#define kNtEventObjectDefactionchange   0x8011
+#define kNtEventObjectAcceleratorchange 0x8012
+
+
+
+/*!BEGIN libc/nt/enum/eventtype.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_EVENTTYPE_H_
+
+#define kNtNotificationEvent    0
+#define kNtSynchronizationEvent 1
+
+
+
+/*!BEGIN libc/nt/enum/exceptionhandleractions.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_EXCEPTIONHANDLERACTIONS_H_
+
+#define kNtExceptionExecuteHandler 0x1u
+#define kNtExceptionContinueExecution 0xffffffffu
+#define kNtExceptionContinueSearch 0x0u
+
+
+
+/*!BEGIN libc/nt/enum/fileflagandattributes.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_FILEFLAGANDATTRIBUTES_H_
+
+/**
+ * MS-DOS File Attributes.
+ *
+ * @see GetFileInformationByHandle()
+ * @see libc/sysv/consts.sh
+ */
+#define kNtFileAttributeReadonly 0x00000001u
+#define kNtFileAttributeHidden 0x00000002u
+#define kNtFileAttributeSystem 0x00000004u
+#define kNtFileAttributeVolumelabel 0x00000008u
+#define kNtFileAttributeDirectory 0x00000010u
+#define kNtFileAttributeArchive 0x00000020u
+
+/**
+ * NT File Attributes.
+ */
+#define kNtFileAttributeDevice 0x00000040u
+#define kNtFileAttributeNormal 0x00000080u
+#define kNtFileAttributeTemporary 0x00000100u
+#define kNtFileAttributeSparseFile 0x00000200u
+#define kNtFileAttributeReparsePoint 0x00000400u
+#define kNtFileAttributeCompressed 0x00000800u
+#define kNtFileAttributeOffline 0x00001000u
+#define kNtFileAttributeNotContentIndexed 0x00002000u
+#define kNtFileAttributeEncrypted 0x00004000u
+
+/**
+ * NT File Flags.
+ */
+#define kNtFileFlagWriteThrough 0x80000000u
+#define kNtFileFlagOverlapped 0x40000000u
+#define kNtFileFlagNoBuffering 0x20000000u
+#define kNtFileFlagRandomAccess 0x10000000u
+#define kNtFileFlagSequentialScan 0x08000000u
+#define kNtFileFlagDeleteOnClose 0x04000000u
+#define kNtFileFlagBackupSemantics 0x02000000u
+#define kNtFileFlagPosixSemantics 0x01000000u
+#define kNtFileFlagOpenReparsePoint 0x00200000u /* or symlink */
+#define kNtFileFlagOpenNoRecall 0x00100000u
+#define kNtFileFlagFirstPipeInstance 0x00080000u
+
+
+
+/*!BEGIN libc/nt/enum/fileinfobyhandleclass.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_FILEINFOBYHANDLECLASS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define kNtFileBasicInfo 0        /* struct NtFileBasicInformation */
+#define kNtFileStandardInfo 1     /* struct NtFileStandardInformation */
+#define kNtFileNameInfo 2         /* struct NtFileNameInformation */
+#define kNtFileStreamInfo 7       /* struct NtFileStreamInformation */
+#define kNtFileCompressionInfo 8  /* struct NtFileCompressionInfo */
+#define kNtFileAttributeTagInfo 9 /* struct NtFileAttributeTagInformation */
+#define kNtFileIdBothDirectoryInfo 10
+#define kNtFileIdBothDirectoryRestartInfo 11
+#define kNtFileRemoteProtocolInfo 13
+#define kNtFileFullDirectoryInfo 14 /* NtFileFullDirectoryInformation */
+#define kNtFileFullDirectoryRestartInfo 15
+#define kNtFileStorageInfo 16                /* win8+ */
+#define kNtFileAlignmentInfo 17              /* win8+ */
+#define kNtFileIdInfo 18                     /* win8+ */
+#define kNtFileIdExtdDirectoryInfo 19        /* win8+ */
+#define kNtFileIdExtdDirectoryRestartInfo 20 /* win8+ */
+
+/* #define kNtFileRenameInfo 4 */
+/* #define kNtFileDispositionInfo 5 */
+/* #define kNtFileAllocationInfo 6 */
+/* #define kNtFileEndOfFileInfo 7 */
+/* #define kNtFileIoPriorityHintInfo 13 */
+/* #define kNtFileDispositionInfoEx 22          /\* win10+ *\/ */
+/* #define kNtFileRenameInfoEx 23               /\* win10+ *\/ */
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/fileinformationclass.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_FILEINFORMATIONCLASS_H_
+
+#define kNtFileDirectoryInformation 1 /*→ struct NtFileDirectoryInformation */
+#define kNtFileFullDirectoryInformation 2 /*→ etc. */
+#define kNtFileBothDirectoryInformation 3
+#define kNtFileBasicInformation 4
+#define kNtFileStandardInformation 5
+#define kNtFileInternalInformation 6
+#define kNtFileEaInformation 7
+#define kNtFileAccessInformation 8
+#define kNtFileNameInformation 9
+#define kNtFileRenameInformation 10
+#define kNtFileLinkInformation 11
+#define kNtFileNamesInformation 12
+#define kNtFileDispositionInformation 13
+#define kNtFilePositionInformation 14
+#define kNtFileFullEaInformation 15
+#define kNtFileModeInformation 16
+#define kNtFileAlignmentInformation 17
+#define kNtFileAllInformation 18
+#define kNtFileAllocationInformation 19
+#define kNtFileEndOfFileInformation 20
+#define kNtFileAlternateNameInformation 21
+#define kNtFileStreamInformation 22
+#define kNtFilePipeInformation 23
+#define kNtFilePipeLocalInformation 24
+#define kNtFilePipeRemoteInformation 25
+#define kNtFileMailslotQueryInformation 26
+#define kNtFileMailslotSetInformation 27
+#define kNtFileCompressionInformation 28
+#define kNtFileObjectIdInformation 29
+#define kNtFileCompletionInformation 30
+#define kNtFileMoveClusterInformation 31
+#define kNtFileQuotaInformation 32
+#define kNtFileReparsePointInformation 33
+#define kNtFileNetworkOpenInformation 34
+#define kNtFileAttributeTagInformation 35
+#define kNtFileTrackingInformation 36
+#define kNtFileIdBothDirectoryInformation 37
+#define kNtFileIdFullDirectoryInformation 38
+#define kNtFileValidDataLengthInformation 39
+#define kNtFileShortNameInformation 40
+#define kNtFileInformation_MAX 40
+
+
+
+/*!BEGIN libc/nt/enum/filelockflags.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_FILELOCKFLAGS_H_
+
+#define kNtLockfileFailImmediately 1
+#define kNtLockfileExclusiveLock   2
+
+
+
+/*!BEGIN libc/nt/enum/filemapflags.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_FILEMAPFLAGS_H_
+
+#define kNtFileMapCopy           0x00000001u
+#define kNtFileMapWrite          0x00000002u
+#define kNtFileMapRead           0x00000004u
+#define kNtFileMapExecute        0x00000020u
+#define kNtFileMapReserve        0x80000000u
+#define kNtFileMapTargetsInvalid 0x40000000u
+#define kNtFileMapLargePages     0x20000000u
+
+
+
+/*!BEGIN libc/nt/enum/filemovemethod.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_FILEMOVEMETHOD_H_
+
+#define kNtFileBegin   0
+#define kNtFileCurrent 1
+#define kNtFileEnd     2
+
+
+
+/*!BEGIN libc/nt/enum/filesharemode.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_FILESHAREFLAGS_H_
+
+#define kNtFileShareExclusive 0x00000000u
+#define kNtFileShareRead 0x00000001u
+#define kNtFileShareWrite 0x00000002u
+#define kNtFileShareDelete 0x00000004u
+
+
+
+/*!BEGIN libc/nt/enum/filetype.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_FILETYPE_H_
+
+#define kNtFileTypeUnknown 0x0000
+#define kNtFileTypeDisk    0x0001 /* @see S_ISBLK() */
+#define kNtFileTypeChar    0x0002 /* @see S_ISCHR() */
+#define kNtFileTypePipe    0x0003 /* @see S_ISFIFO() */
+#define kNtFileTypeRemote  0x8000 /* unused -MSDN */
+
+
+
+/*!BEGIN libc/nt/enum/fillattribute.h */
+
+#define COSMOPOLITAN_LIBC_NT_NTFILLATTRIBUTE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define kNtForegroundBlue 0x0001
+#define kNtForegroundGreen 0x0002
+#define kNtForegroundRed 0x0004
+#define kNtForegroundIntensity 0x0008
+#define kNtBackgroundBlue 0x0010
+#define kNtBackgroundGreen 0x0020
+#define kNtBackgroundRed 0x0040
+#define kNtBackgroundIntensity 0x0080
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/findexinfolevels.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_FINDEXINFOLEVELS_H_
+
+#define kNtFindExInfoStandard     0
+#define kNtFindExInfoBasic        1
+#define kNtFindExInfoMaxInfoLevel 2
+
+
+
+/*!BEGIN libc/nt/enum/findexsearchops.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_FINDEXSEARCHOPS_H_
+
+#define kNtFindExSearchNameMatch          0
+#define kNtFindExSearchLimitToDirectories 1
+#define kNtFindExSearchLimitToDevices     2
+#define kNtFindExSearchMaxSearchOp        3
+
+
+
+/*!BEGIN libc/nt/enum/formatmessageflags.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_FORMATMESSAGEFLAGS_H_
+
+#define kNtFormatMessageAllocateBuffer 0x100
+#define kNtFormatMessageIgnoreInserts  0x200
+#define kNtFormatMessageFromString     0x400
+#define kNtFormatMessageFromHmodule    0x800
+#define kNtFormatMessageFromSystem     0x1000
+#define kNtFormatMessageArgumentArray  0x2000
+#define kNtFormatMessageMaxWidthMask   0xff
+
+
+
+/*!BEGIN libc/nt/enum/fsctl.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_FSCTL_H_
+
+#define kNtFsctlDisableLocalBuffering 0x000902B8u
+#define kNtFsctlFilePrefetch 0x00090120u
+#define kNtFsctlFilesystemGetStatistics 0x00090060u
+#define kNtFsctlGetCompression 0x0009003Cu
+#define kNtFsctlGetNtfsFileRecord 0x00090068u
+#define kNtFsctlGetNtfsVolumeData 0x00090064u
+#define kNtFsctlQueryAllocatedRanges 0x000940CFu
+#define kNtFsctlScrubData 0x000902B0u
+#define kNtFsctlSetCompression 0x0009C040u
+#define kNtFsctlSetSparse 0x000900C4u
+#define kNtFsctlSetZeroData 0x000980C8u
+
+
+
+/*!BEGIN libc/nt/enum/fsinformationclass.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_FSINFORMATIONCLASS_H_
+
+#define kNtFileFsVolumeInformation 1
+#define kNtFileFsLabelInformation 2
+#define kNtFileFsSizeInformation 3
+#define kNtFileFsDeviceInformation 4
+#define kNtFileFsAttributeInformation 5
+#define kNtFileFsControlInformation 6
+#define kNtFileFsFullSizeInformation 7
+#define kNtFileFsObjectIdInformation 8
+#define kNtFileFsDriverPathInformation 9
+#define kNtFileFsInformation_MAX 10
+
+
+
+/*!BEGIN libc/nt/enum/getfileexinfolevels.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_GETFILEEXINFOLEVELS_H_
+
+#define kNtGetFileExInfoStandard 0
+
+
+
+/*!BEGIN libc/nt/enum/ht.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_HT_H_
+
+#define kNtHterror       -2
+#define kNtHttransparent -1
+#define kNtHtnowhere     0
+#define kNtHtclient      1
+#define kNtHtcaption     2
+#define kNtHtsysmenu     3
+#define kNtHtgrowbox     4
+#define kNtHtsize        kNtHtgrowbox
+#define kNtHtmenu        5
+#define kNtHthscroll     6
+#define kNtHtvscroll     7
+#define kNtHtminbutton   8
+#define kNtHtmaxbutton   9
+#define kNtHtleft        10
+#define kNtHtright       11
+#define kNtHttop         12
+#define kNtHttopleft     13
+#define kNtHttopright    14
+#define kNtHtbottom      15
+#define kNtHtbottomleft  16
+#define kNtHtbottomright 17
+#define kNtHtborder      18
+#define kNtHtreduce      kNtHtminbutton
+#define kNtHtzoom        kNtHtmaxbutton
+#define kNtHtsizefirst   kNtHtleft
+#define kNtHtsizelast    kNtHtbottomright
+#define kNtHtobject      19
+#define kNtHtclose       20
+#define kNtHthelp        21
+
+
+
+/*!BEGIN libc/nt/enum/idc.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_IDC_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#define kNtIdcArrow    ((const char16_t *)32512)
+#define kNtIdcIbeam    ((const char16_t *)32513)
+#define kNtIdcWait     ((const char16_t *)32514)
+#define kNtIdcCross    ((const char16_t *)32515)
+#define kNtIdcUparrow  ((const char16_t *)32516)
+#define kNtIdcSizenwse ((const char16_t *)32642)
+#define kNtIdcSizenesw ((const char16_t *)32643)
+#define kNtIdcSizewe   ((const char16_t *)32644)
+#define kNtIdcSizens   ((const char16_t *)32645)
+#define kNtIdcSizeall  ((const char16_t *)32646)
+#define kNtIdcNo       ((const char16_t *)32648)
+#define kNtIdcHand     ((const char16_t *)32649)
+#define kNtIdcHelp     ((const char16_t *)32651)
+#define kNtIdcPin      ((const char16_t *)32671)
+#define kNtIdcPerson   ((const char16_t *)32672)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/imageauxsymboltype.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_IMAGEAUXSYMBOLTYPE_H_
+
+#define kNtImageAuxSymbolTypeTokenDef 1
+
+
+
+/*!BEGIN libc/nt/enum/importobjectnametype.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_IMPORTOBJECTNAMETYPE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+enum NtImportObjectNameType {
+  IMPORT_OBJECT_ORDINAL,
+  IMPORT_OBJECT_NAME,
+  IMPORT_OBJECT_NAME_NO_PREFIX,
+  IMPORT_OBJECT_NAME_UNDECORATE,
+  IMPORT_OBJECT_NAME_EXPORTAS
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/importobjecttype.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_IMPORTOBJECTTYPE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+enum NtImportObjectType {
+  IMPORT_OBJECT_CODE,
+  IMPORT_OBJECT_DATA,
+  IMPORT_OBJECT_CONST
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/ioctl.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_IOCTL_H_
+
+#define kNtIoctlDiskGetDriveGeometry 0x00070000u
+#define kNtIoctlAfdPoll              0x00012024u
+
+
+
+/*!BEGIN libc/nt/enum/jobobjectinfoclass.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_JOBOBJECTINFOCLASS_H_
+
+#define kNtJobObjectBasicAccountingInformation         1
+#define kNtJobObjectBasicLimitInformation              2
+#define kNtJobObjectBasicProcessIdList                 3
+#define kNtJobObjectBasicUIRestrictions                4
+#define kNtJobObjectSecurityLimitInformation           5
+#define kNtJobObjectEndOfJobTimeInformation            6
+#define kNtJobObjectAssociateCompletionPortInformation 7
+#define kNtJobObjectBasicAndIoAccountingInformation    8
+#define kNtJobObjectExtendedLimitInformation           9
+#define kNtJobObjectJobSetInformation                  10
+
+
+
+/*!BEGIN libc/nt/enum/keyaccess.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_KEYACCESS_H_
+
+#define kNtKeyRead      0x00020019
+#define kNtKeyWrite     0x00020006
+#define kNtKeyExecute   0x00020019
+#define kNtKeyAllAccess 0x000f003f
+
+
+
+/*!BEGIN libc/nt/enum/keyedevent.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_KEYEDEVENT_H_
+
+#define kNtKeyedeventWait 0x00000001u
+#define kNtKeyedeventWake 0x00000002u
+#define kNtKeyedeventAllAccess \
+  (kNtStandardRightsRequired | kNtKeyedeventWait | kNtKeyedeventWake)
+
+
+
+/*!BEGIN libc/nt/enum/keyinformationclass.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_KEYINFORMATIONCLASS_H_
+
+#define kNtKeyBasicInformation 0
+#define kNtKeyNodeInformation  1
+#define kNtKeyFullInformation  2
+#define kNtKeyNameInformation  3
+
+
+
+/*!BEGIN libc/nt/enum/kwaitreason.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_KWAITREASON_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define kNtExecutive 0
+#define kNtFreePage 1
+#define kNtPageIn 2
+#define kNtPoolAllocation 3
+#define kNtDelayExecution 4
+#define kNtSuspended 5
+#define kNtUserRequest 6
+#define kNtWrExecutive 7
+#define kNtWrFreePage 8
+#define kNtWrPageIn 9
+#define kNtWrPoolAllocation 10
+#define kNtWrDelayExecution 11
+#define kNtWrSuspended 12
+#define kNtWrUserRequest 13
+#define kNtWrEventPair 14
+#define kNtWrQueue 15
+#define kNtWrLpcReceive 16
+#define kNtWrLpcReply 17
+#define kNtWrVirtualMemory 18
+#define kNtWrPageOut 19
+#define kNtWrRendezvous 20
+#define kNtSpare2 21
+#define kNtSpare3 22
+#define kNtSpare4 23
+#define kNtSpare5 24
+#define kNtSpare6 25
+#define kNtWrKernel 26
+#define kNtMaximumWaitReason 27
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/loadlibrarysearch.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_LOADLIBRARYSEARCH_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define kNtLoadLibrarySearchApplicationDir 0x00000200u
+#define kNtLoadLibrarySearchSearchSystem32 0x00000800u
+#define kNtLoadLibrarySearchUserDirs       0x00000400u
+#define kNtLoadLibrarySearchDefaultDirs    0x00001000u
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/mb.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_MB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define kNtMbOk                      0x00000000
+#define kNtMbOkcancel                0x00000001
+#define kNtMbAbortretryignore        0x00000002
+#define kNtMbYesnocancel             0x00000003
+#define kNtMbYesno                   0x00000004
+#define kNtMbRetrycancel             0x00000005
+#define kNtMbCanceltrycontinue       0x00000006
+#define kNtMbIconhand                0x00000010
+#define kNtMbIconquestion            0x00000020
+#define kNtMbIconexclamation         0x00000030
+#define kNtMbIconasterisk            0x00000040
+#define kNtMbUsericon                0x00000080
+#define kNtMbIconwarning             kNtMbIconexclamation
+#define kNtMbIconerror               kNtMbIconhand
+#define kNtMbIconinformation         kNtMbIconasterisk
+#define kNtMbIconstop                kNtMbIconhand
+#define kNtMbDefbutton1              0x00000000
+#define kNtMbDefbutton2              0x00000100
+#define kNtMbDefbutton3              0x00000200
+#define kNtMbDefbutton4              0x00000300
+#define kNtMbApplmodal               0x00000000
+#define kNtMbSystemmodal             0x00001000
+#define kNtMbTaskmodal               0x00002000
+#define kNtMbHelp                    0x00004000
+#define kNtMbNofocus                 0x00008000
+#define kNtMbSetforeground           0x00010000
+#define kNtMbDefaultDesktopOnly      0x00020000
+#define kNtMbTopmost                 0x00040000
+#define kNtMbRight                   0x00080000
+#define kNtMbRtlreading              0x00100000
+#define kNtMbServiceNotification     0x00200000
+#define kNtMbServiceNotificationNt3x 0x00040000
+#define kNtMbTypemask                0x0000000F
+#define kNtMbIconmask                0x000000F0
+#define kNtMbDefmask                 0x00000F00
+#define kNtMbModemask                0x00003000
+#define kNtMbMiscmask                0x0000C000
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/memflags.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_MEMFLAGS_H_
+
+#define kNtMemCommit 0x1000  /* perform physical memory reservation step */
+#define kNtMemReserve 0x2000 /* perform virtual memory reservation step */
+#define kNtMemDecommit 0x4000
+#define kNtMemRelease 0x8000
+#define kNtMemFree 0x10000
+#define kNtMemPrivate 0x20000
+#define kNtMemMapped 0x40000
+#define kNtMemReset 0x80000
+#define kNtMemTopDown 0x100000
+#define kNtMemWriteWatch 0x200000
+#define kNtMemPhysical 0x400000
+#define kNtMemLargePages 0x20000000
+#define kNtMem4mbPages 0x80000000
+
+
+
+/*!BEGIN libc/nt/enum/memoryinformationclass.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_MEMORYINFORMATIONCLASS_H_
+
+#define kNtMemoryBasicInformation    0
+#define kNtMemoryWorkingSetList      1
+#define kNtMemorySectionName         2
+#define kNtMemoryBasicVlmInformation 3
+
+
+
+/*!BEGIN libc/nt/enum/mf.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_MF_H_
+
+#define kNtMfInsert          0x00000000
+#define kNtMfChange          0x00000080
+#define kNtMfAppend          0x00000100
+#define kNtMfDelete          0x00000200
+#define kNtMfRemove          0x00001000
+#define kNtMfBycommand       0x00000000
+#define kNtMfByposition      0x00000400
+#define kNtMfSeparator       0x00000800
+#define kNtMfEnabled         0x00000000
+#define kNtMfGrayed          0x00000001
+#define kNtMfDisabled        0x00000002
+#define kNtMfUnchecked       0x00000000
+#define kNtMfChecked         0x00000008
+#define kNtMfUsecheckbitmaps 0x00000200
+#define kNtMfString          0x00000000
+#define kNtMfBitmap          0x00000004
+#define kNtMfOwnerdraw       0x00000100
+#define kNtMfPopup           0x00000010
+#define kNtMfMenubarbreak    0x00000020
+#define kNtMfMenubreak       0x00000040
+#define kNtMfUnhilite        0x00000000
+#define kNtMfHilite          0x00000080
+#define kNtMfDefault         0x00001000
+#define kNtMfSysmenu         0x00002000
+#define kNtMfHelp            0x00004000
+#define kNtMfRightjustify    0x00004000
+#define kNtMfMouseselect     0x00008000
+
+
+
+/*!BEGIN libc/nt/enum/mk.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_MK_H_
+
+#define kNtMkLbutton  0x0001
+#define kNtMkRbutton  0x0002
+#define kNtMkShift    0x0004
+#define kNtMkControl  0x0008
+#define kNtMkMbutton  0x0010
+#define kNtMkXbutton1 0x0020
+#define kNtMkXbutton2 0x0040
+
+
+
+/*!BEGIN libc/nt/enum/movefileexflags.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_MOVEFILEEXFLAGS_H_
+
+#define kNtMovefileReplaceExisting    1
+#define kNtMovefileCopyAllowed        2
+#define kNtMovefileDelayUntilReboot   4
+#define kNtMovefileCreateHardlink     16
+#define kNtMovefileFailIfNotTrackable 32
+#define kNtMovefileWriteThrough       8
+
+
+
+/*!BEGIN libc/nt/enum/objectinformationclass.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_OBJECTINFORMATIONCLASS_H_
+
+#define kNtObjectBasicInformation 0 /*→ struct NtObjectBasicInformation */
+#define kNtObjectNameInformation  1 /*→ etc. */
+#define kNtObjectTypeInformation  2
+#define kNtObjectAllInformation   3
+#define kNtObjectDataInformation  4
+
+
+
+/*!BEGIN libc/nt/enum/offerpriority.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_OFFERPRIORITY_H_
+
+/* TODO(jart): Are these values correct? */
+#define kNtVmOfferPriorityVeryLow     1 /* 0x00001000? */
+#define kNtVmOfferPriorityLow         2 /* 0x00002000? */
+#define kNtVmOfferPriorityBelowNormal 3 /* 0x00002000? */
+#define kNtVmOfferPriorityNormal      4 /* 0x00002000? */
+
+
+
+/*!BEGIN libc/nt/enum/ofn.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_OFN_H_
+
+#define kNtOfnReadonly             0x00000001
+#define kNtOfnOverwriteprompt      0x00000002
+#define kNtOfnHidereadonly         0x00000004
+#define kNtOfnNochangedir          0x00000008
+#define kNtOfnShowhelp             0x00000010
+#define kNtOfnEnablehook           0x00000020
+#define kNtOfnEnabletemplate       0x00000040
+#define kNtOfnEnabletemplatehandle 0x00000080
+#define kNtOfnNovalidate           0x00000100
+#define kNtOfnAllowmultiselect     0x00000200
+#define kNtOfnExtensiondifferent   0x00000400
+#define kNtOfnPathmustexist        0x00000800
+#define kNtOfnFilemustexist        0x00001000
+#define kNtOfnCreateprompt         0x00002000
+#define kNtOfnShareaware           0x00004000
+#define kNtOfnNoreadonlyreturn     0x00008000
+#define kNtOfnNotestfilecreate     0x00010000
+#define kNtOfnNonetworkbutton      0x00020000
+#define kNtOfnNolongnames          0x00040000
+#define kNtOfnExplorer             0x00080000
+#define kNtOfnNodereferencelinks   0x00100000
+#define kNtOfnLongnames            0x00200000
+#define kNtOfnEnableincludenotify  0x00400000
+#define kNtOfnEnablesizing         0x00800000
+#define kNtOfnDontaddtorecent      0x02000000
+#define kNtOfnForceshowhidden      0x10000000
+
+
+
+/*!BEGIN libc/nt/enum/pageflags.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_PAGEFLAGS_H_
+
+/* Pick One */
+#define kNtPageNoaccess 0x01
+#define kNtPageReadonly 0x02
+#define kNtPageReadwrite 0x04
+#define kNtPageWritecopy 0x08
+#define kNtPageExecute 0x10
+#define kNtPageExecuteRead 0x20
+#define kNtPageExecuteReadwrite 0x40
+#define kNtPageExecuteWritecopy 0x80
+#define kNtPageGuard 0x100
+#define kNtPageNocache 0x200
+#define kNtPageWritecombine 0x400
+
+/* These may be OR'd */
+#define kNtSecReserve 0x4000000
+#define kNtSecCommit 0x8000000 /* ←default */
+#define kNtSecImage 0x1000000
+#define kNtSecImageNoExecute 0x11000000
+#define kNtSecLargePages 0x80000000
+#define kNtSecNocache 0x10000000
+#define kNtSecWritecombine 0x40000000
+
+
+
+/*!BEGIN libc/nt/enum/processaccess.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_PROCESSACCESS_H_
+
+#define kNtProcessCreateProcess 0x0080u
+#define kNtProcessCreateThread 0x0002u
+#define kNtProcessDupHandle 0x0040u
+#define kNtProcessQueryInformation 0x0400u
+#define kNtProcessQueryLimitedInformation 0x1000u
+#define kNtProcessSetInformation 0x0200u
+#define kNtProcessSetQuota 0x0100u
+#define kNtProcessSuspendResume 0x0800u
+#define kNtProcessTerminate 0x0001u
+#define kNtProcessVmOperation 0x0008u
+#define kNtProcessVmRead 0x0010u
+#define kNtProcessVmWrite 0x0020u
+#define kNtProcessSynchronize kNtSynchronize
+#define kNtProcessAllAccess \
+  (kNtStandardRightsRequired | kNtSynchronize | 0xffffu)
+
+
+
+/*!BEGIN libc/nt/enum/processcreationflags.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_PROCESSCREATIONFLAGS_H_
+
+#define kNtIdlePriorityClass        0x00000040u
+#define kNtBelowNormalPriorityClass 0x00004000u
+#define kNtNormalPriorityClass      0x00000020u
+#define kNtAboveNormalPriorityClass 0x00008000u
+#define kNtHighPriorityClass        0x00000080u
+#define kNtRealtimePriorityClass    0x00000100u
+
+#define kNtDebugProcess                 0x00000001u
+#define kNtDebugOnlyThisProcess         0x00000002u
+#define kNtCreateSuspended              0x00000004u
+#define kNtDetachedProcess              0x00000008u
+#define kNtCreateNewConsole             0x00000010u
+#define kNtCreateNewProcessGroup        0x00000200u
+#define kNtCreateUnicodeEnvironment     0x00000400u
+#define kNtCreateSeparateWowVdm         0x00000800u
+#define kNtCreateSharedWowVdm           0x00001000u
+#define kNtCreateForcedos               0x00002000u
+#define kNtInheritParentAffinity        0x00010000u
+#define kNtCreateProtectedProcess       0x00040000u
+#define kNtExtendedStartupinfoPresent   0x00080000u
+#define kNtProcessModeBackgroundBegin   0x00100000u
+#define kNtProcessModeBackgroundEnd     0x00200000u
+#define kNtCreateSecureProcess          0x00400000u
+#define kNtCreateBreakawayFromJob       0x01000000u
+#define kNtCreatePreserveCodeAuthzLevel 0x02000000u
+#define kNtCreateDefaultErrorMode       0x04000000u
+#define kNtCreateNoWindow               0x08000000u
+#define kNtProfileUser                  0x10000000u
+#define kNtProfileKernel                0x20000000u
+#define kNtProfileServer                0x40000000u
+#define kNtCreateIgnoreSystemDefault    0x80000000u
+
+
+
+/*!BEGIN libc/nt/enum/processinfoclass.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_PROCESSINFOCLASS_H_
+
+#define kNtProcessBasicInformation 0
+#define kNtProcessQuotaLimits      1
+#define kNtProcessIoCounters       2
+#define kNtProcessVmCounters       3
+#define kNtProcessTimes            4
+#define kNtProcessBasePriority     5
+#define kNtProcessRaisePriority    6
+#define kNtProcessDebugPort        7
+#define kNtProcessExceptionPort    8
+#define kNtProcessAccessToken      9
+#define kNtProcessWow64Information 26
+#define kNtProcessImageFileName    27
+
+
+
+/*!BEGIN libc/nt/enum/procthreadattributes.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_PROCTHREADATTRIBUTES_H_
+
+#define kNtProcThreadAttributeReplaceValue 1
+#define kNtProcThreadAttributeHandleList 0x00020002
+
+
+
+/*!BEGIN libc/nt/enum/progress.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_PROGRESS_H_
+
+#define kNtProgressContinue 0
+#define kNtProgressCancel   1
+#define kNtProgressStop     2
+#define kNtProgressQuiet    3
+
+
+
+/*!BEGIN libc/nt/enum/pwr.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_PWR_H_
+
+#define kNtPwrOk             1
+#define kNtPwrFail           (-1)
+#define kNtPwrSuspendrequest 1
+#define kNtPwrSuspendresume  2
+#define kNtPwrCriticalresume 3
+
+
+
+/*!BEGIN libc/nt/enum/rdw.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_RDW_H_
+
+#define kNtRdwInvalidate      0x0001
+#define kNtRdwInternalpaint   0x0002
+#define kNtRdwErase           0x0004
+#define kNtRdwValidate        0x0008
+#define kNtRdwNointernalpaint 0x0010
+#define kNtRdwNoerase         0x0020
+#define kNtRdwNochildren      0x0040
+#define kNtRdwAllchildren     0x0080
+#define kNtRdwUpdatenow       0x0100
+#define kNtRdwErasenow        0x0200
+#define kNtRdwFrame           0x0400
+#define kNtRdwNoframe         0x0800
+
+
+
+/*!BEGIN libc/nt/enum/reggetvalueflags.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_REGGETVALUEFLAGS_H_
+
+#define kNtRrfRtRegNone        0x00000001
+#define kNtRrfRtRegSz          0x00000002
+#define kNtRrfRtRegExpandSz    0x00000004
+#define kNtRrfRtRegBinary      0x00000008
+#define kNtRrfRtRegDword       0x00000010
+#define kNtRrfRtRegMultiSz     0x00000020
+#define kNtRrfRtRegQword       0x00000040
+#define kNtRrfRtDword          (kNtRrfRtRegBinary | kNtRrfRtRegDword)
+#define kNtRrfRtQword          (kNtRrfRtRegBinary | kNtRrfRtRegQword)
+#define kNtRrfRtAny            0x0000ffff
+#define kNtRrfSubkeyWow6464key 0x00010000
+#define kNtRrfSubkeyWow6432key 0x00020000
+#define kNtRrfWow64Mask        0x00030000
+#define kNtRrfNoexpand         0x10000000
+#define kNtRrfZeroonfailure    0x20000000
+
+
+
+/*!BEGIN libc/nt/enum/regtype.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_REGTYPE_H_
+
+#define kNtRegNone                     0
+#define kNtRegSz                       1 /* UTF-16 string */
+#define kNtRegExpandSz                 2 /* UTF-16 string w/ env vars refs */
+#define kNtRegBinary                   3
+#define kNtRegDword                    4
+#define kNtRegDwordBigEndian           5
+#define kNtRegLink                     6
+#define kNtRegMultiSz                  7 /* UTF-16 double-nul-terminated */
+#define kNtRegResourceList             8
+#define kNtRegFullResourceDescriptor   9
+#define kNtRegResourceRequirementsList 10
+#define kNtRegQword                    11
+
+
+
+/*!BEGIN libc/nt/enum/replacefile.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_REPLACEFILE_H_
+
+#define kNtReplacefileWriteThrough      1
+#define kNtReplacefileIgnoreMergeErrors 2
+#define kNtReplacefileIgnoreAclErrors   4
+
+
+
+/*!BEGIN libc/nt/enum/sc.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_SC_H_
+
+#define kNtScSize         0xF000
+#define kNtScMove         0xF010
+#define kNtScMinimize     0xF020
+#define kNtScMaximize     0xF030
+#define kNtScNextwindow   0xF040
+#define kNtScPrevwindow   0xF050
+#define kNtScClose        0xF060
+#define kNtScVscroll      0xF070
+#define kNtScHscroll      0xF080
+#define kNtScMousemenu    0xF090
+#define kNtScKeymenu      0xF100
+#define kNtScArrange      0xF110
+#define kNtScRestore      0xF120
+#define kNtScTasklist     0xF130
+#define kNtScScreensave   0xF140
+#define kNtScHotkey       0xF150
+#define kNtScDefault      0xF160
+#define kNtScMonitorpower 0xF170
+#define kNtScContexthelp  0xF180
+#define kNtScSeparator    0xF00F
+
+
+
+/*!BEGIN libc/nt/enum/sectioninformationclass.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_SECTIONINFORMATIONCLASS_H_
+
+#define kNtSectionBasicInformation 0
+#define kNtSectionImageInformation 1
+
+
+
+/*!BEGIN libc/nt/enum/sectioninherit.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_SECTIONINHERIT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+enum NtSectionInherit { kNtViewShare = 1, kNtViewUnmap = 2 };
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/sectionmapflags.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_SECTIONMAPFLAGS_H_
+
+#define kNtSectionQuery              0x0001
+#define kNtSectionMapWrite           0x0002
+#define kNtSectionMapRead            0x0004
+#define kNtSectionMapExecute         0x0008
+#define kNtSectionExtendSize         0x0010
+#define kNtSectionMapExecuteExplicit 0x0020
+
+
+
+/*!BEGIN libc/nt/enum/securityimpersonationlevel.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_SECURITYIMPERSONATIONLEVEL_H_
+
+#define kNtSecurityAnonymous      0
+#define kNtSecurityIdentification 1
+#define kNtSecurityImpersonation  2
+#define kNtSecurityDelegation     3
+
+
+
+/*!BEGIN libc/nt/enum/securityinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_SECURITYINFORMATION_H_
+
+#define kNtOwnerSecurityInformation 0x00000001
+#define kNtGroupSecurityInformation 0x00000002
+#define kNtDaclSecurityInformation 0x00000004
+#define kNtSaclSecurityInformation 0x00000008
+#define kNtLabelSecurityInformation 0x00000010
+#define kNtAttributeSecurityInformation 0x00000020
+#define kNtScopeSecurityInformation 0x00000040
+#define kNtProcessTrustLabelSecurityInformation 0x00000080
+#define kNtAccessFilterSecurityInformation 0x00000100
+#define kNtBackupSecurityInformation 0x00010000
+#define kNtProtectedDaclSecurityInformation 0x80000000
+#define kNtProtectedSaclSecurityInformation 0x40000000
+#define kNtUnprotectedDaclSecurityInformation 0x20000000
+#define kNtUnprotectedSaclSecurityInformation 0x10000000
+
+
+
+/*!BEGIN libc/nt/enum/signal.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_SIGNAL_H_
+
+#define kNtSignalBreakpoint          0x80000003u
+#define kNtSignalIllegalInstruction  0xC000001Du
+#define kNtSignalPrivInstruction     0xC0000096u
+#define kNtSignalGuardPage           0x80000001u
+#define kNtSignalAccessViolation     0xC0000005u
+#define kNtSignalInPageError         0xC0000006u
+#define kNtSignalInvalidHandle       0xC0000008u
+#define kNtSignalInvalidParameter    0xC000000du
+#define kNtSignalFltDenormalOperand  0xC000008Du
+#define kNtSignalFltDivideByZero     0xC000008Eu
+#define kNtSignalFltInexactResult    0xC000008Fu
+#define kNtSignalFltInvalidOperation 0xC0000090u
+#define kNtSignalFltOverflow         0xC0000091u
+#define kNtSignalFltStackCheck       0xC0000092u
+#define kNtSignalFltUnderflow        0xC0000093u
+#define kNtSignalIntegerDivideByZero 0xC0000094u
+#define kNtSignalDllNotFound         0xC0000135u
+#define kNtSignalOrdinalNotFound     0xC0000138u
+#define kNtSignalEntrypointNotFound  0xC0000139u
+#define kNtSignalControlCExit        0xC000013Au
+#define kNtSignalDllInitFailed       0xC0000142u
+#define kNtSignalFloatMultipleFaults 0xC00002B4u
+#define kNtSignalFloatMultipleTraps  0xC00002B5u
+#define kNtSignalAssertionFailure    0xC0000420u
+
+
+
+/*!BEGIN libc/nt/enum/sio.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_SIO_H_
+
+#define kNtSioBspHandlePoll 0x4800001D
+#define kNtSioBaseHandle    0x48000022
+
+
+
+/*!BEGIN libc/nt/enum/size.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_SIZE_H_
+
+#define kNtSizeRestored  0
+#define kNtSizeMinimized 1
+#define kNtSizeMaximized 2
+#define kNtSizeMaxshow   3
+#define kNtSizeMaxhide   4
+
+
+
+/*!BEGIN libc/nt/enum/startf.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_STARTF_H_
+
+#define kNtStartfUseshowwindow 0x00000001 /* otherwise wShowWindow ignored */
+#define kNtStartfUsesize 0x00000002       /* otherwise dwX / dwY ignored */
+#define kNtStartfUseposition 0x00000004   /* otherwise dwX/YSize ignored */
+#define kNtStartfUsecountchars 0x00000008 /* otherwise dwX/YCountChars ign. */
+#define kNtStartfUsefillattribute 0x00000010 /* etc. */
+#define kNtStartfRunfullscreen 0x00000020
+#define kNtStartfForceonfeedback 0x00000040
+#define kNtStartfForceofffeedback 0x00000080
+#define kNtStartfUsestdhandles 0x00000100 /* otherwise hStd... ignored */
+#define kNtStartfUsehotkey 0x00000200
+#define kNtStartfTitleislinkname 0x00000800
+#define kNtStartfTitleisappid 0x00001000
+#define kNtStartfPreventpinning 0x00002000
+#define kNtStartfUntrustedsource 0x00008000
+
+
+
+/*!BEGIN libc/nt/enum/status.h */
+
+#define COSMOPOLITAN_LIBC_NT_STATUS_H_
+
+/* high two bits = {success,informational,warning,error} */
+#define kNtStatusSuccess                  0x00000000 /* success statuses */
+#define kNtStatusWait0                    0x00000000
+#define kNtStatusAbandonedWait0           0x00000080
+#define kNtStatusUserApc                  0x000000C0
+#define kNtStatusTimeout                  0x00000102
+#define kNtStatusPending                  0x00000103
+#define kNtStatusGuardPageViolation       0x80000001 /* warning statuses */
+#define kNtStatusDatatypeMisalignment     0x80000002
+#define kNtStatusBreakpoint               0x80000003
+#define kNtStatusSingleStep               0x80000004
+#define kNtStatusLongjump                 0x80000026
+#define kNtStatusUnwindConsolidate        0x80000029
+#define kNtStatusAccessViolation          0xC0000005 /* error statuses */
+#define kNtStatusInPageError              0xC0000006
+#define kNtStatusInvalidHandle            0xC0000008
+#define kNtStatusInvalidParameter         0xC000000D
+#define kNtStatusNoMemory                 0xC0000017
+#define kNtStatusIllegalInstruction       0xC000001D
+#define kNtStatusNoncontinuableException  0xC0000025
+#define kNtStatusInvalidDisposition       0xC0000026
+#define kNtStatusArrayBoundsExceeded      0xC000008C
+#define kNtStatusFloatDenormalOperand     0xC000008D
+#define kNtStatusFloatDivideByZero        0xC000008E
+#define kNtStatusFloatInexactResult       0xC000008F
+#define kNtStatusFloatInvalidOperation    0xC0000090
+#define kNtStatusFloatOverflow            0xC0000091
+#define kNtStatusFloatStackCheck          0xC0000092
+#define kNtStatusFloatUnderflow           0xC0000093
+#define kNtStatusIntegerDivideBYZero      0xC0000094
+#define kNtStatusIntegerOverflow          0xC0000095
+#define kNtStatusPrivilegedInstruction    0xC0000096
+#define kNtStatusStackOverflow            0xC00000FD
+#define kNtStatusDllNotFound              0xC0000135
+#define kNtStatusOrdinalNotFound          0xC0000138
+#define kNtStatusEntrypointNotFound       0xC0000139
+#define kNtStatusControlCExit             0xC000013A
+#define kNtStatusDllInitFailed            0xC0000142
+#define kNtStatusFloatMultipleFaults      0xC00002B4
+#define kNtStatusFloatMultipleTraps       0xC00002B5
+#define kNtStatusRegNatConsumption        0xC00002C9
+#define kNtStatusHeapCorruption           0xC0000374
+#define kNtStatusStackBufferOverrun       0xC0000409
+#define kNtStatusInvalidCruntimeParameter 0xC0000417
+#define kNtStatusAssertionFailure         0xC0000420
+#define kNtStatusEnclaveViolation         0xC00004A2
+#define kNtStatusSegmentNotification      0x40000005
+#define kNtStatusFatalAppExit             0x40000015
+#define kNtStatusNotFound                 0xC0000225
+#define kNtStatusCancelled                0xC0000120
+
+#define kNtDbgExceptionHandled    0x00010001
+#define kNtDbgContinue            0x00010002
+#define kNtDbgReplyLater          0x40010001
+#define kNtDbgTerminateThread     0x40010003
+#define kNtDbgTerminateProcess    0x40010004
+#define kNtDbgControlC            0x40010005
+#define kNtDbgPrintexceptionC     0x40010006
+#define kNtDbgRipexception        0x40010007
+#define kNtDbgControlBreak        0x40010008
+#define kNtDbgCommandException    0x40010009
+#define kNtDbgPrintexceptionWideC 0x4001000A
+#define kNtDbgExceptionNotHandled 0x80010001
+#define kNtStillActive            kNtStatusPending
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef uint32_t NtStatus;
+
+#define NtSuccess(s)      ((NtStatus)(s) >= 0)
+#define NtInformation(s)  (NtSeverity(s) == 1)
+#define NtWarning(s)      (NtSeverity(s) == 2)
+#define NtError(s)        (NtSeverity(s) == 3)
+#define NtCode(s)         ((NtStatus)(s)&0xffff)
+#define NtSeverity(s)     ((NtStatus)(s) >> 30)
+#define NtFacility(s)     (((NtStatus)(s) >> 16) & 0xfff)
+#define NtFacilityCode(s) ((NtStatus)(s)&0x0FFFFFFF)
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/sw.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_SW_H_
+
+#define kNtSwHide            0
+#define kNtSwShownormal      1
+#define kNtSwNormal          1
+#define kNtSwShowminimized   2
+#define kNtSwShowmaximized   3
+#define kNtSwMaximize        3
+#define kNtSwShownoactivate  4
+#define kNtSwShow            5
+#define kNtSwMinimize        6
+#define kNtSwShowminnoactive 7
+#define kNtSwShowna          8
+#define kNtSwRestore         9
+#define kNtSwShowdefault     10
+#define kNtSwForceminimize   11
+
+
+
+/*!BEGIN libc/nt/enum/systeminformationclass.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_SYSTEMINFORMATIONCLASS_H_
+
+#define kNtSystemBasicInformation 0
+#define kNtSystemProcessorInformation 1
+#define kNtSystemPerformanceInformation 2
+#define kNtSystemTimeOfDayInformation 3
+#define kNtSystemProcessInformation 5
+#define kNtSystemProcessorTimes 8
+#define kNtSystemGlobalFlag 9
+#define kNtSystemModuleInformation 11
+#define kNtSystemLockInformation 12
+#define kNtSystemHandleInformation 16
+#define kNtSystemObjectInformation 17
+#define kNtSystemInterruptInformation 23
+#define kNtSystemExceptionInformation 33
+#define kNtSystemRegistryQuotaInformation 37
+#define kNtSystemLookasideInformation 45
+
+
+
+/*!BEGIN libc/nt/enum/threadaccess.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_THREADACCESS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#define kNtThreadTerminate 0x0001
+#define kNtThreadSuspendResume 0x0002
+#define kNtThreadGetContext 0x0008
+#define kNtThreadSetContext 0x0010
+#define kNtThreadQueryInformation 0x0040
+#define kNtThreadSetInformation 0x0020
+#define kNtThreadSetThreadToken 0x0080
+#define kNtThreadImpersonate 0x0100
+#define kNtThreadDirectImpersonation 0x0200
+#define kNtThreadSetLimitedInformation 0x0400
+#define kNtThreadQueryLimitedInformation 0x0800
+#define kNtThreadResume 0x1000
+#define kNtThreadAllAccess (kNtStandardRightsRequired | kNtSynchronize | 0xFFFF)
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/threadinfoclass.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_THREADINFOCLASS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+enum NtThreadInfoClass {
+  kNtThreadBasicInformation,
+  kNtThreadTimes,
+  kNtThreadPriority,
+  kNtThreadBasePriority,
+  kNtThreadAffinityMask,
+  kNtThreadImpersonationToken,
+  kNtThreadDescriptorTableEntry,
+  kNtThreadEnableAlignmentFaultFixup,
+  kNtThreadEventPair_Reusable,
+  kNtThreadQuerySetWin32StartAddress,
+  kNtThreadZeroTlsCell,
+  kNtThreadPerformanceCount,
+  kNtThreadAmILastThread,
+  kNtThreadIdealProcessor,
+  kNtThreadPriorityBoost,
+  kNtThreadSetTlsArrayAddress,
+  kNtThreadIsIoPending,
+  kNtThreadHideFromDebugger,
+  kNtThreadInfoClass_MAX
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/threadpriority.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_THREADPRIORITY_H_
+
+#define kNtThreadBasePriorityIdle  (-15)
+#define kNtThreadBasePriorityMin   (-2)
+#define kNtThreadBasePriorityMax   2
+#define kNtThreadBasePriorityLowrt 15
+
+#define kNtThreadPriorityIdle         kNtThreadBasePriorityIdle
+#define kNtThreadPriorityLowest       kNtThreadBasePriorityMin
+#define kNtThreadPriorityBelowNormal  (kNtThreadPriorityLowest + 1)
+#define kNtThreadPriorityNormal       0
+#define kNtThreadPriorityAboveNormal  (kNtThreadPriorityHighest - 1)
+#define kNtThreadPriorityHighest      kNtThreadBasePriorityMax
+#define kNtThreadPriorityTimeCritical kNtThreadBasePriorityLowrt
+
+
+
+/*!BEGIN libc/nt/enum/threadstate.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_THREADSTATE_H_
+
+#define kNtStateInitialized 0
+#define kNtStateReady       1
+#define kNtStateRunning     2
+#define kNtStateStandby     3
+#define kNtStateTerminated  4
+#define kNtStateWait        5
+#define kNtStateTransition  6
+#define kNtStateUnknown     7
+
+
+
+/*!BEGIN libc/nt/enum/tokeninformationclass.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_TOKENINFORMATIONCLASS_H_
+
+#define kNtTokenUser 1
+#define kNtTokenGroups 2
+#define kNtTokenPrivileges 3
+#define kNtTokenOwner 4
+#define kNtTokenPrimaryGroup 5
+#define kNtTokenDefaultDacl 6
+#define kNtTokenSource 7
+#define kNtTokenType 8
+#define kNtTokenImpersonationLevel 9
+#define kNtTokenStatistics 10
+#define kNtTokenRestrictedSids 11
+#define kNtTokenSessionId 12
+#define kNtTokenGroupsAndPrivileges 13
+#define kNtTokenSessionReference 14
+#define kNtTokenSandBoxInert 15
+#define kNtTokenAuditPolicy 16
+#define kNtTokenOrigin 17
+#define kNtTokenInfoClass_MAX 18
+
+
+
+/*!BEGIN libc/nt/enum/tokentype.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_TOKENTYPE_H_
+
+#define kNtTokenPrimary       1
+#define kNtTokenImpersonation 2
+
+
+
+/*!BEGIN libc/nt/enum/tpm.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_TPM_H_
+
+#define kNtTpmLeftbutton      0x00000
+#define kNtTpmRightbutton     0x00002
+#define kNtTpmLeftalign       0x00000
+#define kNtTpmCenteralign     0x00004
+#define kNtTpmRightalign      0x00008
+#define kNtTpmTopalign        0x00000
+#define kNtTpmVcenteralign    0x00010
+#define kNtTpmBottomalign     0x00020
+#define kNtTpmHorizontal      0x00000
+#define kNtTpmVertical        0x00040
+#define kNtTpmNonotify        0x00080
+#define kNtTpmReturncmd       0x00100
+#define kNtTpmRecurse         0x00001
+#define kNtTpmHorposanimation 0x00400
+#define kNtTpmHorneganimation 0x00800
+#define kNtTpmVerposanimation 0x01000
+#define kNtTpmVerneganimation 0x02000
+#define kNtTpmNoanimation     0x04000
+#define kNtTpmLayoutrtl       0x08000
+#define kNtTpmWorkarea        0x10000
+
+
+
+/*!BEGIN libc/nt/enum/valueinformationclass.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_VALUEINFORMATIONCLASS_H_
+
+#define kNtKeyValueBasicInformation          0
+#define kNtKeyValueFullInformation           1
+#define kNtKeyValuePartialInformation        2
+#define kNtKeyValueFullInformationAlign64    3
+#define kNtKeyValuePartialInformationAlign64 4
+
+
+
+/*!BEGIN libc/nt/enum/version.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_VERSION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+/**
+ * Known versions of the New Technology executive.
+ * @see NtGetVersion()
+ */
+#define kNtVersionWindows10 0x0a00
+#define kNtVersionWindows81 0x0603
+#define kNtVersionWindows8 0x0602
+#define kNtVersionWindows7 0x0601
+#define kNtVersionWindowsVista 0x0600 /* intended baseline */
+#define kNtVersionWindowsXp64 0x0502  /* end of the road */
+#define kNtVersionWindowsXp 0x0501    /* snowball's chance */
+#define kNtVersionWindows2000 0x0500  /* the golden age */
+#define kNtVersionFuture 0x0b00
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/enum/vk.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_VK_H_
+
+#define kNtVkLbutton                      0x01
+#define kNtVkRbutton                      0x02
+#define kNtVkCancel                       0x03
+#define kNtVkMbutton                      0x04
+#define kNtVkXbutton1                     0x05
+#define kNtVkXbutton2                     0x06
+#define kNtVkBack                         0x08
+#define kNtVkTab                          0x09
+#define kNtVkClear                        0x0C
+#define kNtVkReturn                       0x0D
+#define kNtVkShift                        0x10
+#define kNtVkControl                      0x11
+#define kNtVkMenu                         0x12 /* alt? */
+#define kNtVkPause                        0x13
+#define kNtVkCapital                      0x14
+#define kNtVkKana                         0x15
+#define kNtVkHangul                       0x15
+#define kNtVkJunja                        0x17
+#define kNtVkFinal                        0x18
+#define kNtVkHanja                        0x19
+#define kNtVkKanji                        0x19
+#define kNtVkEscape                       0x1B
+#define kNtVkConvert                      0x1C
+#define kNtVkNonconvert                   0x1D
+#define kNtVkAccept                       0x1E
+#define kNtVkModechange                   0x1F
+#define kNtVkSpace                        0x20
+#define kNtVkPrior                        0x21
+#define kNtVkNext                         0x22
+#define kNtVkEnd                          0x23
+#define kNtVkHome                         0x24
+#define kNtVkLeft                         0x25
+#define kNtVkUp                           0x26
+#define kNtVkRight                        0x27
+#define kNtVkDown                         0x28
+#define kNtVkSelect                       0x29
+#define kNtVkPrint                        0x2A
+#define kNtVkExecute                      0x2B
+#define kNtVkSnapshot                     0x2C
+#define kNtVkInsert                       0x2D
+#define kNtVkDelete                       0x2E
+#define kNtVkHelp                         0x2F
+#define kNtVkLwin                         0x5B
+#define kNtVkRwin                         0x5C
+#define kNtVkApps                         0x5D
+#define kNtVkSleep                        0x5F
+#define kNtVkNumpad0                      0x60
+#define kNtVkNumpad1                      0x61
+#define kNtVkNumpad2                      0x62
+#define kNtVkNumpad3                      0x63
+#define kNtVkNumpad4                      0x64
+#define kNtVkNumpad5                      0x65
+#define kNtVkNumpad6                      0x66
+#define kNtVkNumpad7                      0x67
+#define kNtVkNumpad8                      0x68
+#define kNtVkNumpad9                      0x69
+#define kNtVkMultiply                     0x6A
+#define kNtVkAdd                          0x6B
+#define kNtVkSeparator                    0x6C
+#define kNtVkSubtract                     0x6D
+#define kNtVkDecimal                      0x6E
+#define kNtVkDivide                       0x6F
+#define kNtVkF1                           0x70
+#define kNtVkF2                           0x71
+#define kNtVkF3                           0x72
+#define kNtVkF4                           0x73
+#define kNtVkF5                           0x74
+#define kNtVkF6                           0x75
+#define kNtVkF7                           0x76
+#define kNtVkF8                           0x77
+#define kNtVkF9                           0x78
+#define kNtVkF10                          0x79
+#define kNtVkF11                          0x7A
+#define kNtVkF12                          0x7B
+#define kNtVkF13                          0x7C
+#define kNtVkF14                          0x7D
+#define kNtVkF15                          0x7E
+#define kNtVkF16                          0x7F
+#define kNtVkF17                          0x80
+#define kNtVkF18                          0x81
+#define kNtVkF19                          0x82
+#define kNtVkF20                          0x83
+#define kNtVkF21                          0x84
+#define kNtVkF22                          0x85
+#define kNtVkF23                          0x86
+#define kNtVkF24                          0x87
+#define kNtVkNumlock                      0x90
+#define kNtVkScroll                       0x91
+#define kNtVkLshift                       0xA0
+#define kNtVkRshift                       0xA1
+#define kNtVkLcontrol                     0xA2
+#define kNtVkRcontrol                     0xA3
+#define kNtVkLmenu                        0xA4
+#define kNtVkRmenu                        0xA5
+#define kNtVkBrowserBack                  0xA6
+#define kNtVkBrowserForward               0xA7
+#define kNtVkBrowserRefresh               0xA8
+#define kNtVkBrowserStop                  0xA9
+#define kNtVkBrowserSearch                0xAA
+#define kNtVkBrowserFavorites             0xAB
+#define kNtVkBrowserHome                  0xAC
+#define kNtVkVolumeMute                   0xAD
+#define kNtVkVolumeDown                   0xAE
+#define kNtVkVolumeUp                     0xAF
+#define kNtVkMediaNextTrack               0xB0
+#define kNtVkMediaPrevTrack               0xB1
+#define kNtVkMediaStop                    0xB2
+#define kNtVkMediaPlayPause               0xB3
+#define kNtVkLaunchMail                   0xB4
+#define kNtVkLaunchMediaSelect            0xB5
+#define kNtVkLaunchApp1                   0xB6
+#define kNtVkLaunchApp2                   0xB7
+#define kNtVkOem_1                        0xBA
+#define kNtVkOemPlus                      0xBB
+#define kNtVkOemComma                     0xBC
+#define kNtVkOemMinus                     0xBD
+#define kNtVkOemPeriod                    0xBE
+#define kNtVkOem_2                        0xBF
+#define kNtVkOem_3                        0xC0
+#define kNtVkGamepadA                     0xC3
+#define kNtVkGamepadB                     0xC4
+#define kNtVkGamepadX                     0xC5
+#define kNtVkGamepadY                     0xC6
+#define kNtVkGamepadRightShoulder         0xC7
+#define kNtVkGamepadLeftShoulder          0xC8
+#define kNtVkGamepadLeftTrigger           0xC9
+#define kNtVkGamepadRightTrigger          0xCA
+#define kNtVkGamepadDpadUp                0xCB
+#define kNtVkGamepadDpadDown              0xCC
+#define kNtVkGamepadDpadLeft              0xCD
+#define kNtVkGamepadDpadRight             0xCE
+#define kNtVkGamepadMenu                  0xCF
+#define kNtVkGamepadView                  0xD0
+#define kNtVkGamepadLeftThumbstickButton  0xD1
+#define kNtVkGamepadRightThumbstickButton 0xD2
+#define kNtVkGamepadLeftThumbstickUp      0xD3
+#define kNtVkGamepadLeftThumbstickDown    0xD4
+#define kNtVkGamepadLeftThumbstickRight   0xD5
+#define kNtVkGamepadLeftThumbstickLeft    0xD6
+#define kNtVkGamepadRightThumbstickUp     0xD7
+#define kNtVkGamepadRightThumbstickDown   0xD8
+#define kNtVkGamepadRightThumbstickRight  0xD9
+#define kNtVkGamepadRightThumbstickLeft   0xDA
+#define kNtVkOem_4                        0xDB
+#define kNtVkOem_5                        0xDC
+#define kNtVkOem_6                        0xDD
+#define kNtVkOem_7                        0xDE
+#define kNtVkOem_8                        0xDF
+#define kNtVkOemAx                        0xE1
+#define kNtVkOem_102                      0xE2
+#define kNtVkIcoHelp                      0xE3
+#define kNtVkIco_00                       0xE4
+#define kNtVkProcesskey                   0xE5
+#define kNtVkIcoClear                     0xE6
+#define kNtVkPacket                       0xE7
+#define kNtVkOemReset                     0xE9
+#define kNtVkOemJump                      0xEA
+#define kNtVkOemPa1                       0xEB
+#define kNtVkOemPa2                       0xEC
+#define kNtVkOemPa3                       0xED
+#define kNtVkOemWsctrl                    0xEE
+#define kNtVkOemCusel                     0xEF
+#define kNtVkOemAttn                      0xF0
+#define kNtVkOemFinish                    0xF1
+#define kNtVkOemCopy                      0xF2
+#define kNtVkOemAuto                      0xF3
+#define kNtVkOemEnlw                      0xF4
+#define kNtVkOemBacktab                   0xF5
+#define kNtVkAttn                         0xF6
+#define kNtVkCrsel                        0xF7
+#define kNtVkExsel                        0xF8
+#define kNtVkEreof                        0xF9
+#define kNtVkPlay                         0xFA
+#define kNtVkZoom                         0xFB
+#define kNtVkNoname                       0xFC
+#define kNtVkPa1                          0xFD
+#define kNtVkOemClear                     0xFE
+
+
+
+/*!BEGIN libc/nt/enum/wa.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_WA_H_
+
+#define kNtWaInactive    0
+#define kNtWaActive      1
+#define kNtWaClickactive 2
+
+
+
+/*!BEGIN libc/nt/enum/wait.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_WAIT_H_
+
+#define kNtWaitFailed  0xffffffffu
+#define kNtWaitTimeout 0x00000102u
+
+
+
+/*!BEGIN libc/nt/enum/wm.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_WM_H_
+
+#define kNtWmNull                   0x0000
+#define kNtWmCreate                 0x0001
+#define kNtWmDestroy                0x0002
+#define kNtWmMove                   0x0003
+#define kNtWmSize                   0x0005
+#define kNtWmActivate               0x0006
+#define kNtWmSetfocus               0x0007
+#define kNtWmKillfocus              0x0008
+#define kNtWmEnable                 0x000A
+#define kNtWmSetredraw              0x000B
+#define kNtWmSettext                0x000C
+#define kNtWmGettext                0x000D
+#define kNtWmGettextlength          0x000E
+#define kNtWmPaint                  0x000F
+#define kNtWmClose                  0x0010
+#define kNtWmQueryendsession        0x0011
+#define kNtWmQueryopen              0x0013
+#define kNtWmEndsession             0x0016
+#define kNtWmQuit                   0x0012
+#define kNtWmErasebkgnd             0x0014
+#define kNtWmSyscolorchange         0x0015
+#define kNtWmShowwindow             0x0018
+#define kNtWmWininichange           0x001A
+#define kNtWmSettingchange          kNtWmWininichange
+#define kNtWmDevmodechange          0x001B
+#define kNtWmActivateapp            0x001C
+#define kNtWmFontchange             0x001D
+#define kNtWmTimechange             0x001E
+#define kNtWmCancelmode             0x001F
+#define kNtWmSetcursor              0x0020
+#define kNtWmMouseactivate          0x0021
+#define kNtWmChildactivate          0x0022
+#define kNtWmQueuesync              0x0023
+#define kNtWmGetminmaxinfo          0x0024
+#define kNtWmPainticon              0x0026
+#define kNtWmIconerasebkgnd         0x0027
+#define kNtWmNextdlgctl             0x0028
+#define kNtWmSpoolerstatus          0x002A
+#define kNtWmDrawitem               0x002B
+#define kNtWmMeasureitem            0x002C
+#define kNtWmDeleteitem             0x002D
+#define kNtWmVkeytoitem             0x002E
+#define kNtWmChartoitem             0x002F
+#define kNtWmSetfont                0x0030
+#define kNtWmGetfont                0x0031
+#define kNtWmSethotkey              0x0032
+#define kNtWmGethotkey              0x0033
+#define kNtWmQuerydragicon          0x0037
+#define kNtWmCompareitem            0x0039
+#define kNtWmGetobject              0x003D
+#define kNtWmCompacting             0x0041
+#define kNtWmWindowposchanging      0x0046
+#define kNtWmWindowposchanged       0x0047
+#define kNtWmPower                  0x0048
+#define kNtWmCopydata               0x004A
+#define kNtWmCanceljournal          0x004B
+#define kNtWmNotify                 0x004E
+#define kNtWmInputlangchangerequest 0x0050
+#define kNtWmInputlangchange        0x0051
+#define kNtWmTcard                  0x0052
+#define kNtWmHelp                   0x0053
+#define kNtWmUserchanged            0x0054
+#define kNtWmNotifyformat           0x0055
+#define kNtWmContextmenu            0x007B
+#define kNtWmStylechanging          0x007C
+#define kNtWmStylechanged           0x007D
+#define kNtWmDisplaychange          0x007E
+#define kNtWmGeticon                0x007F
+#define kNtWmSeticon                0x0080
+#define kNtWmNccreate               0x0081
+#define kNtWmNcdestroy              0x0082
+#define kNtWmNccalcsize             0x0083
+#define kNtWmNchittest              0x0084
+#define kNtWmNcpaint                0x0085
+#define kNtWmNcactivate             0x0086
+#define kNtWmGetdlgcode             0x0087
+#define kNtWmNcmousemove            0x00A0
+#define kNtWmNclbuttondown          0x00A1
+#define kNtWmNclbuttonup            0x00A2
+#define kNtWmNclbuttondblclk        0x00A3
+#define kNtWmNcrbuttondown          0x00A4
+#define kNtWmNcrbuttonup            0x00A5
+#define kNtWmNcrbuttondblclk        0x00A6
+#define kNtWmNcmbuttondown          0x00A7
+#define kNtWmNcmbuttonup            0x00A8
+#define kNtWmNcmbuttondblclk        0x00A9
+#define kNtWmNcxbuttondown          0x00AB
+#define kNtWmNcxbuttonup            0x00AC
+#define kNtWmNcxbuttondblclk        0x00AD
+#define kNtWmKeyfirst               0x0100
+#define kNtWmKeydown                0x0100
+#define kNtWmKeyup                  0x0101
+#define kNtWmChar                   0x0102
+#define kNtWmDeadchar               0x0103
+#define kNtWmSyskeydown             0x0104
+#define kNtWmSyskeyup               0x0105
+#define kNtWmSyschar                0x0106
+#define kNtWmSysdeadchar            0x0107
+#define kNtWmUnichar                0x0109
+#define kNtWmKeylast                0x0109
+#define kNtWmInitdialog             0x0110
+#define kNtWmCommand                0x0111
+#define kNtWmSyscommand             0x0112
+#define kNtWmTimer                  0x0113
+#define kNtWmHscroll                0x0114
+#define kNtWmVscroll                0x0115
+#define kNtWmInitmenu               0x0116
+#define kNtWmInitmenupopup          0x0117
+#define kNtWmGesture                0x0119
+#define kNtWmGesturenotify          0x011A
+#define kNtWmMenuselect             0x011F
+#define kNtWmMenuchar               0x0120
+#define kNtWmEnteridle              0x0121
+#define kNtWmMenurbuttonup          0x0122
+#define kNtWmMenudrag               0x0123
+#define kNtWmMenugetobject          0x0124
+#define kNtWmUninitmenupopup        0x0125
+#define kNtWmMenucommand            0x0126
+#define kNtWmChangeuistate          0x0127
+#define kNtWmUpdateuistate          0x0128
+#define kNtWmQueryuistate           0x0129
+#define kNtWmMousefirst             0x0200
+#define kNtWmMousemove              0x0200
+#define kNtWmLbuttondown            0x0201
+#define kNtWmLbuttonup              0x0202
+#define kNtWmLbuttondblclk          0x0203
+#define kNtWmRbuttondown            0x0204
+#define kNtWmRbuttonup              0x0205
+#define kNtWmRbuttondblclk          0x0206
+#define kNtWmMbuttondown            0x0207
+#define kNtWmMbuttonup              0x0208
+#define kNtWmMbuttondblclk          0x0209
+#define kNtWmMousewheel             0x020A
+#define kNtWmXbuttondown            0x020B
+#define kNtWmXbuttonup              0x020C
+#define kNtWmXbuttondblclk          0x020D
+#define kNtWmMousehwheel            0x020E
+#define kNtWmMouselast              0x020E
+#define kNtWmParentnotify           0x0210
+#define kNtWmEntermenuloop          0x0211
+#define kNtWmExitmenuloop           0x0212
+#define kNtWmNextmenu               0x0213
+#define kNtWmSizing                 0x0214
+#define kNtWmCapturechanged         0x0215
+#define kNtWmMoving                 0x0216
+#define kNtWmPowerbroadcast         0x0218
+#define kNtWmMdicreate              0x0220
+#define kNtWmMdidestroy             0x0221
+#define kNtWmMdiactivate            0x0222
+#define kNtWmMdirestore             0x0223
+#define kNtWmMdinext                0x0224
+#define kNtWmMdimaximize            0x0225
+#define kNtWmMditile                0x0226
+#define kNtWmMdicascade             0x0227
+#define kNtWmMdiiconarrange         0x0228
+#define kNtWmMdigetactive           0x0229
+#define kNtWmMdisetmenu             0x0230
+#define kNtWmEntersizemove          0x0231
+#define kNtWmExitsizemove           0x0232
+#define kNtWmDropfiles              0x0233
+#define kNtWmMdirefreshmenu         0x0234
+#define kNtWmCut                    0x0300
+#define kNtWmCopy                   0x0301
+#define kNtWmPaste                  0x0302
+#define kNtWmClear                  0x0303
+#define kNtWmUndo                   0x0304
+#define kNtWmRenderformat           0x0305
+#define kNtWmRenderallformats       0x0306
+#define kNtWmDestroyclipboard       0x0307
+#define kNtWmDrawclipboard          0x0308
+#define kNtWmPaintclipboard         0x0309
+#define kNtWmVscrollclipboard       0x030A
+#define kNtWmSizeclipboard          0x030B
+#define kNtWmAskcbformatname        0x030C
+#define kNtWmChangecbchain          0x030D
+#define kNtWmHscrollclipboard       0x030E
+#define kNtWmQuerynewpalette        0x030F
+#define kNtWmPaletteischanging      0x0310
+#define kNtWmPalettechanged         0x0311
+#define kNtWmHotkey                 0x0312
+
+
+
+/*!BEGIN libc/nt/enum/ws.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_WS_H_
+
+#define kNtWsOverlapped   0x00000000
+#define kNtWsPopup        0x80000000
+#define kNtWsChild        0x40000000
+#define kNtWsMinimize     0x20000000
+#define kNtWsVisible      0x10000000
+#define kNtWsDisabled     0x08000000
+#define kNtWsClipsiblings 0x04000000
+#define kNtWsClipchildren 0x02000000
+#define kNtWsMaximize     0x01000000
+#define kNtWsCaption      0x00C00000
+#define kNtWsBorder       0x00800000
+#define kNtWsDlgframe     0x00400000
+#define kNtWsVscroll      0x00200000
+#define kNtWsHscroll      0x00100000
+#define kNtWsSysmenu      0x00080000
+#define kNtWsThickframe   0x00040000
+#define kNtWsGroup        0x00020000
+#define kNtWsTabstop      0x00010000
+#define kNtWsMinimizebox  0x00020000
+#define kNtWsMaximizebox  0x00010000
+#define kNtWsTiled        kNtWsOverlapped
+#define kNtWsIconic       kNtWsMinimize
+#define kNtWsSizebox      kNtWsThickframe
+#define kNtWsTiledwindow  kNtWsOverlappedwindow
+#define kNtWsOverlappedwindow                                        \
+  (kNtWsOverlapped | kNtWsCaption | kNtWsSysmenu | kNtWsThickframe | \
+   kNtWsMinimizebox | kNtWsMaximizebox)
+#define kNtWsPopupwindow (kNtWsPopup | kNtWsBorder | kNtWsSysmenu)
+
+#define kNtWsExDlgmodalframe       0x00000001
+#define kNtWsExNoparentnotify      0x00000004
+#define kNtWsExTopmost             0x00000008
+#define kNtWsExAcceptfiles         0x00000010
+#define kNtWsExTransparent         0x00000020
+#define kNtWsExMdichild            0x00000040
+#define kNtWsExToolwindow          0x00000080
+#define kNtWsExWindowedge          0x00000100
+#define kNtWsExClientedge          0x00000200
+#define kNtWsExContexthelp         0x00000400
+#define kNtWsExRight               0x00001000
+#define kNtWsExLeft                0x00000000
+#define kNtWsExRtlreading          0x00002000
+#define kNtWsExLtrreading          0x00000000
+#define kNtWsExLeftscrollbar       0x00004000
+#define kNtWsExRightscrollbar      0x00000000
+#define kNtWsExControlparent       0x00010000
+#define kNtWsExStaticedge          0x00020000
+#define kNtWsExAppwindow           0x00040000
+#define kNtWsExNoinheritlayout     0x00100000
+#define kNtWsExNoredirectionbitmap 0x00200000
+#define kNtWsExLayoutrtl           0x00400000
+#define kNtWsExComposited          0x02000000
+#define kNtWsExNoactivate          0x08000000
+
+#define kNtWsExOverlappedwindow (kNtWsExWindowedge | kNtWsExClientedge)
+#define kNtWsExPalettewindow \
+  (kNtWsExWindowedge | kNtWsExToolwindow | kNtWsExTopmost)
+
+
+
+/*!BEGIN libc/nt/enum/wt.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_WT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#define kNtWtExecuteonlyonce 8
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/afd.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_AFD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct NtAfdPollHandleInfo {
+  int64_t Handle;
+  uint32_t Events;
+  NtStatus Status;
+};
+
+struct NtAfdPollInfo {
+  int64_t Timeout;
+  uint32_t NumberOfHandles;
+  uint32_t Exclusive;
+  struct NtAfdPollHandleInfo Handles[1];
+};
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/ansistring.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_ANSISTRING_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtAnsiString {
+  unsigned short Length;
+  unsigned short MaximumLength;
+  char *Buffer;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/byhandlefileinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_BYHANDLEFILEINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtByHandleFileInformation {
+  uint32_t dwFileAttributes; /* ←NtFileFlagAndAttributes */
+  struct NtFileTime ftCreationFileTime;
+  struct NtFileTime ftLastAccessFileTime;
+  struct NtFileTime ftLastWriteFileTime;
+  uint32_t dwVolumeSerialNumber;
+  uint32_t nFileSizeHigh;
+  uint32_t nFileSizeLow;
+  uint32_t nNumberOfLinks;
+  uint32_t nFileIndexHigh;
+  uint32_t nFileIndexLow;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/charinfo.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_CHARINFO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtCharInfo {
+  union {
+    char16_t UnicodeChar;
+    char AsciiChar;
+  } Char;
+  uint16_t Attributes;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/clientid.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_CLIENTID_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtClientId {
+  void *UniqueProcess;
+  void *UniqueThread;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/consolecursorinfo.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_CONSOLECURSORINFO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtConsoleCursorInfo {
+  uint32_t dwSize;
+  bool32 bVisible;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/consolescreenbufferinfo.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_CONSOLESCREENBUFFERINFO_H_
+
+
+/*!BEGIN libc/nt/struct/coord.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_COORD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtCoord {
+  int16_t X;
+  int16_t Y;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/smallrect.h */
+
+#define COSMOPOLITAN_LIBC_NT_ENUM_SMALLRECT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSmallRect {
+  int16_t Left;
+  int16_t Top;
+  int16_t Right;
+  int16_t Bottom;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtConsoleScreenBufferInfo {
+  struct NtCoord dwSize;
+  struct NtCoord dwCursorPosition;
+  uint16_t wAttributes;
+  struct NtSmallRect srWindow;
+  struct NtCoord dwMaximumWindowSize;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/consolescreenbufferinfoex.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_CONSOLESCREENBUFFERINFOEX_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtConsoleScreenBufferInfoEx {
+  uint32_t cbSize; /* sizeof(struct NtConsoleScreenBufferInfoEx) */
+  struct NtCoord dwSize;
+  struct NtCoord dwCursorPosition;
+  uint16_t wAttributes; /* kNt{Foreground,Background}... */
+  struct NtSmallRect srWindow;
+  struct NtCoord dwMaximumWindowSize;
+  uint16_t wPopupAttributes;
+  bool32 bFullscreenSupported;
+  uint32_t ColorTable[16]; /* 0x00BBGGRR */
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/consoleselectioninfo.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_CONSOLESELECTIONINFO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtConsoleSelectionInfo {
+  uint32_t dwFlags;
+  struct NtCoord dwSelectionAnchor;
+  struct NtSmallRect srSelection;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/context.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_CONTEXT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtM128A {
+  uint64_t Low;
+  int64_t High;
+};
+
+struct NtXmmSaveArea32 { /* basically same as struct FpuState */
+  uint16_t ControlWord;
+  uint16_t StatusWord;
+  uint8_t TagWord;
+  uint8_t Reserved1;
+  uint16_t ErrorOpcode;
+  uint32_t ErrorOffset;
+  uint16_t ErrorSelector;
+  uint16_t Reserved2;
+  uint32_t DataOffset;
+  uint16_t DataSelector;
+  uint16_t Reserved3;
+  uint32_t MxCsr;
+  uint32_t MxCsr_Mask;
+  struct NtM128A FloatRegisters[8];
+  struct NtM128A XmmRegisters[16];
+  uint8_t Reserved4[96];
+};
+
+struct NtContext {
+  uint64_t P1Home, P2Home, P3Home, P4Home, P5Home, P6Home;
+  uint32_t ContextFlags;
+  uint32_t MxCsr;
+  uint16_t SegCs, SegDs, SegEs, SegFs, SegGs, SegSs;
+  uint32_t EFlags;
+  uint64_t Dr0, Dr1, Dr2, Dr3, Dr6, Dr7;
+  uint64_t Rax, Rcx, Rdx, Rbx, Rsp, Rbp, Rsi, Rdi;
+  uint64_t R8, R9, R10, R11, R12, R13, R14, R15;
+  uint64_t Rip;
+  union {
+    struct NtXmmSaveArea32 FltSave;
+    struct NtXmmSaveArea32 FloatSave;
+    struct {
+      struct NtM128A Header[2];
+      struct NtM128A Legacy[8];
+      struct NtM128A Xmm0, Xmm1, Xmm2, Xmm3, Xmm4, Xmm5, Xmm6, Xmm7;
+      struct NtM128A Xmm8, Xmm9, Xmm10, Xmm11, Xmm12, Xmm13, Xmm14, Xmm15;
+    };
+  };
+  struct NtM128A VectorRegister[26];
+  uint64_t VectorControl;
+  uint64_t DebugControl;
+  uint64_t LastBranchToRip;
+  uint64_t LastBranchFromRip;
+  uint64_t LastExceptionToRip;
+  uint64_t LastExceptionFromRip;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/criticalsection.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_CRITICALSECTION_H_
+
+
+/*!BEGIN libc/nt/struct/criticalsectiondebug.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_CRITICALSECTIONDEBUG_H_
+
+
+/*!BEGIN libc/nt/struct/linkedlist.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_LINKEDLIST_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+/**
+ * Dynamic linked list overlay.
+ */
+struct NtLinkedList {
+  struct NtLinkedList *Next;
+  struct NtLinkedList *Prev;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtCriticalSectionDebug {
+  uint16_t Type;
+  uint16_t CreatorBackTraceIndex;
+  struct NtCriticalSection *CriticalSection;
+  struct NtLinkedList ProcessLocksList;
+  uint32_t EntryCount;
+  uint32_t ContentionCount;
+  uint32_t Spare[2];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtCriticalSection {
+  struct NtCriticalSectionDebug *DebugInfo;
+  int32_t LockCount;
+  int32_t RecursionCount;
+  void *OwningThread;
+  void *LockSemaphore;
+  uintptr_t SpinCount;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/drawtextparams.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_DRAWTEXTPARAMS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct NtDrawTextParams {
+  uint32_t cbSize;
+  int32_t iTabLength;
+  int32_t iLeftMargin;
+  int32_t iRightMargin;
+  uint32_t uiLengthDrawn;
+};
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/editmenu.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_EDITMENU_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtEditMenu {
+  int64_t hmenu;
+  uint16_t idEdit;
+  uint16_t idCut;
+  uint16_t idCopy;
+  uint16_t idPaste;
+  uint16_t idClear;
+  uint16_t idUndo;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/exceptionframe.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_EXCEPTIONFRAME_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtExceptionFrame {
+  struct NtExceptionFrame *Prev;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/fileaccessinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEACCESSINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileAccessInformation {
+  uint32_t AccessFlags;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filealignmentinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEALIGNMENTINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileAlignmentInformation {
+  uint32_t AlignmentRequirement;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/fileallinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEALLINFORMATION_H_
+
+
+/*!BEGIN libc/nt/struct/filebasicinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEBASICINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileBasicInformation {
+  int64_t CreationTime;    /* in 100ns units */
+  int64_t LastAccessTime;  /* in 100ns units */
+  int64_t LastWriteTime;   /* in 100ns units */
+  int64_t ChangeTime;      /* in 100ns units */
+  uint32_t FileAttributes; /* kNtFileAttributeXXX */
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/fileeainformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEEAINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileEaInformation {
+  uint32_t EaSize;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/fileinternalinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEINTERNALINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileInternalInformation {
+  int64_t IndexNumber;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filemodeinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEMODEINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileModeInformation {
+  uint32_t Mode;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filenameinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILENAMEINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileNameInformation {
+  uint32_t FileNameLength;
+  char16_t FileName[1];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filepositioninformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEPOSITIONINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFilePositionInformation {
+  int64_t CurrentByteOffset;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filestandardinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILESTANDARDINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileStandardInformation {
+  int64_t AllocationSize;
+  int64_t EndOfFile;
+  uint32_t NumberOfLinks;
+  bool32 DeletePending;
+  bool32 Directory;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileAllInformation {
+  struct NtFileBasicInformation BasicInformation;
+  struct NtFileStandardInformation StandardInformation;
+  struct NtFileInternalInformation InternalInformation;
+  struct NtFileEaInformation EaInformation;
+  struct NtFileAccessInformation AccessInformation;
+  struct NtFilePositionInformation PositionInformation;
+  struct NtFileModeInformation ModeInformation;
+  struct NtFileAlignmentInformation AlignmentInformation;
+  struct NtFileNameInformation NameInformation;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/fileallocationinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEALLOCATIONINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileAllocationInformation {
+  int64_t AllocationSize;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/fileattributetaginformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEATTRIBUTETAGINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileAttributeTagInformation {
+  uint32_t FileAttributes;
+  uint32_t ReparseTag;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filebasicinfo.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEBASICINFO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileBasicInfo {
+  int64_t CreationTime;    /* in 100ns units */
+  int64_t LastAccessTime;  /* in 100ns units */
+  int64_t LastWriteTime;   /* in 100ns units */
+  int64_t ChangeTime;      /* in 100ns units */
+  uint32_t FileAttributes; /* kNtFileAttributeXXX */
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filebothdirectoryinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEBOTHDIRECTORYINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct NtFileBothDirectoryInformation {
+  uint32_t NextEntryOffset;
+  uint32_t FileIndex;
+  int64_t CreationTime;
+  int64_t LastAccessTime;
+  int64_t LastWriteTime;
+  int64_t ChangeTime;
+  int64_t EndOfFile;
+  int64_t AllocationSize;
+  uint32_t FileAttributes;
+  uint32_t FileNameLength;
+  uint32_t EaSize;
+  unsigned char ShortNameLength;
+  char16_t ShortName[12];
+  char16_t FileName[1];
+};
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filecompressioninfo.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILECOMPRESSIONINFO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileCompressionInfo {
+  int64_t CompressedFileSize;
+  uint16_t CompressionFormat;
+  uint8_t CompressionUnitShift;
+  uint8_t ChunkShift;
+  uint8_t ClusterShift;
+  uint8_t Reserved[3];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filedirectoryinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEDIRECTORYINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileDirectoryInformation {
+  uint32_t NextEntryOffset;
+  uint32_t FileIndex;
+  int64_t CreationTime;
+  int64_t LastAccessTime;
+  int64_t LastWriteTime;
+  int64_t ChangeTime;
+  int64_t EndOfFile;
+  int64_t AllocationSize;
+  uint32_t FileAttributes;
+  uint32_t FileNameLength;
+  char16_t FileName[1];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filedispositioninformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEDISPOSITIONINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileDispositionInformation {
+  bool32 DoDeleteFile;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/fileendoffileinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEENDOFFILEINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct FileEndOfFileInformation {
+  int64_t EndOfFile;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filefulldirectoryinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEFULLDIRECTORYINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileFullDirectoryInformation {
+  uint32_t NextEntryOffset;
+  uint32_t FileIndex;
+  int64_t CreationTime;
+  int64_t LastAccessTime;
+  int64_t LastWriteTime;
+  int64_t ChangeTime;
+  int64_t EndOfFile;
+  int64_t AllocationSize;
+  uint32_t FileAttributes;
+  uint32_t FileNameLength;
+  uint32_t EaSize;
+  char16_t FileName[1];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filefulleainformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEFULLEAINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileFullEaInformation {
+  uint32_t NextEntryOffset;
+  uint8_t Flags;
+  uint8_t EaNameLength;
+  uint16_t EaValueLength;
+  char EaName[1];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filemailslotqueryinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEMAILSLOTQUERYINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileMailslotQueryInformation {
+  uint32_t MaximumMessageSize;
+  uint32_t MailslotQuota;
+  uint32_t NextMessageSize;
+  uint32_t MessagesAvailable;
+  int64_t ReadTimeout;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filemailslotsetinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEMAILSLOTSETINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileMailslotSetInformation {
+  int64_t ReadTimeout;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filenamesinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILENAMESINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileNamesInformation {
+  uint32_t NextEntryOffset;
+  uint32_t FileIndex;
+  uint32_t FileNameLength;
+  char16_t FileName[1];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filenetworkopeninformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILENETWORKOPENINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileNetworkOpenInformation {
+  int64_t CreationTime;
+  int64_t LastAccessTime;
+  int64_t LastWriteTime;
+  int64_t ChangeTime;
+  int64_t AllocationSize;
+  int64_t EndOfFile;
+  uint32_t FileAttributes;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filepipelocalinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEPIPELOCALINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFilePipeLocalInformation {
+  uint32_t NamedPipeType;
+  uint32_t NamedPipeConfiguration;
+  uint32_t MaximumInstances;
+  uint32_t CurrentInstances;
+  uint32_t InboundQuota;
+  uint32_t ReadDataAvailable;
+  uint32_t OutboundQuota;
+  uint32_t WriteQuotaAvailable;
+  uint32_t NamedPipeState;
+  uint32_t NamedPipeEnd;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filerenameinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILERENAMEINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileRenameInformation {
+  bool32 Replace;
+  void *RootDir;
+  uint32_t FileNameLength;
+  char16_t FileName[1];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filesegmentelement.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILESEGMENTELEMENT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+union NtFileSegmentElement {
+  void *Buffer;
+  uint64_t Alignment;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filestreaminformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILESTREAMINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileStreamInformation {
+  uint32_t NextEntryOffset;
+  uint32_t StreamNameLength;
+  int64_t StreamSize;
+  int64_t StreamAllocationSize;
+  char16_t StreamName[1];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/filezerodatainformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEZERODATAINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFileZeroDataInformation {
+  uint64_t FileOffset;
+  uint64_t BeyondFinalZero;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/fpodata.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_FPODATA_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtFpoData {
+  /* TODO(jart): No bitfields. */
+  uint32_t ulOffStart;
+  uint32_t cbProcSize;
+  uint32_t cdwLocals;
+  uint16_t cdwParams;
+  uint16_t cbProlog : 8;
+  uint16_t cbRegs : 3;
+  uint16_t fHasSEH : 1;
+  uint16_t fUseBP : 1;
+  uint16_t reserved : 1;
+  uint16_t cbFrame : 2;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/genericmapping.h */
+
+#define COSMOPOLITAN_LIBC_NT_GENERICMAPPING_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtGenericMapping {
+  unsigned int GenericRead;
+  unsigned int GenericWrite;
+  unsigned int GenericExecute;
+  unsigned int GenericAll;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/guid.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_GUID_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct NtGuid {
+  uint32_t Data1;
+  uint16_t Data2;
+  uint16_t Data3;
+  uint8_t Data4[8];
+};
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/inputrecord.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_INPUTRECORD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtKeyEventRecord {
+  bool32 bKeyDown;
+  uint16_t wRepeatCount;
+  uint16_t wVirtualKeyCode;
+  uint16_t wVirtualScanCode;
+  union {
+    int16_t UnicodeChar;
+    char AsciiChar;
+  } uChar;
+  unsigned int dwControlKeyState;
+};
+
+struct NtMouseEventRecord {
+  struct NtCoord dwMousePosition;
+  uint32_t dwButtonState;
+  uint32_t dwControlKeyState;
+  uint32_t dwEventFlags;
+};
+
+struct NtWindowBufferSizeRecord {
+  struct NtCoord dwSize;
+};
+
+struct NtMenuEventRecord {
+  uint32_t dwCommandId;
+};
+
+struct NtFocusEventRecord {
+  bool32 bSetFocus;
+};
+
+struct NtInputRecord {
+  uint16_t EventType;
+  union {
+    struct NtKeyEventRecord KeyEvent;
+    struct NtMouseEventRecord MouseEvent;
+    struct NtWindowBufferSizeRecord WindowBufferSizeEvent;
+    struct NtMenuEventRecord MenuEvent;
+    struct NtFocusEventRecord FocusEvent;
+  } Event;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/iocounters.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_IOCOUNTERS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtIoCounters {
+  uint64_t ReadOperationCount;
+  uint64_t WriteOperationCount;
+  uint64_t OtherOperationCount;
+  uint64_t ReadTransferCount;
+  uint64_t WriteTransferCount;
+  uint64_t OtherTransferCount;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/iostatusblock.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_IOSTATUSBLOCK_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtIoStatusBlock {
+  union {
+    NtStatus Status;
+    void *Pointer; /* reserved for internal use */
+  };
+  uint32_t *Information; /* request dependent */
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/kernelusertimes.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_KERNELUSERTIMES_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtKernelUserTimes {
+  uint64_t CreateFileTime;
+  uint64_t ExitFileTime;
+  int64_t KernelTime;
+  int64_t UserTime;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/ldr.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_LDR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtLdr {
+  uint32_t SizeOfThis;                       /* msdn:reserved */
+  uint32_t IsInitialized;                    /* msdn:reserved */
+  void *SsHandle;                            /* msdn:reserved */
+  struct NtLinkedList InLoadOrderModuleList; /* msdn:reserved */
+  struct NtLinkedList /*∩NtLdrDataTableEntry*/ InMemoryOrderModuleList;
+  struct NtLinkedList InInitOrderModuleList; /* msdn:reserved */
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/ldrdatatableentry.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_LDRDATATABLEENTRY_H_
+
+
+/*!BEGIN libc/nt/struct/unicodestring.h */
+
+#define COSMOPOLITAN_LIBC_NT_UNICODE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtUnicodeString {
+  uint16_t Length;
+  uint16_t MaxLength;
+  char16_t *Data;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtLdrDataTableEntry {
+  struct NtLinkedList InLoadOrderLinks; /* msdn:reserved */
+  struct NtLinkedList InMemoryOrderLinks;
+  struct NtLinkedList InInitOrderLinks; /* msdn:reserved */
+  void *DllBase;
+  void *EntryPoint;
+  union {
+    uint32_t SizeOfImage;
+    unsigned char SizeOfImagePadding[__SIZEOF_POINTER__];
+  };
+  struct NtUnicodeString FullDllName;
+  struct NtUnicodeString BaseDllName;
+  uint32_t Flags;
+  uint16_t Load_Count;
+  uint16_t TlsIndex;
+  union {
+    struct NtLinkedList HashLinks;
+    struct {
+      void *SectionPointer;
+      uint32_t CheckSum;
+    };
+  };
+  union {
+    void *LoadedImports;
+    uint32_t TimeDateStamp;
+  };
+  void *EntryPointActivationContext;
+  void *PatchInformation;
+  struct NtLinkedList ForwarderLinks;
+  struct NtLinkedList ServiceTagLinks;
+  struct NtLinkedList StaticLinks;
+  void *ContextInformation;
+  uintptr_t OriginalBase;
+  int64_t LoadTime;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/luid.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_LUID_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtLuid {
+  uint32_t LowPart;
+  int32_t HighPart;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/luidandattributes.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_LUIDANDATTRIBUTES_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtLuidAndAttributes {
+  struct NtLuid Luid;
+  uint32_t Attributes;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/memorybasicinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_MEMORYBASICINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtMemoryBasicInformation {
+  void *BaseAddress;
+  void *AllocationBase;
+  uint32_t AllocationProtect;
+  uint64_t RegionSize;
+  uint32_t State;
+  uint32_t Protect;
+  uint32_t Type;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/memoryrangeentry.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_MEMORYRANGEENTRY_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtMemoryRangeEntry {
+  void *VirtualAddress;
+  size_t NumberOfBytes;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/memorystatusex.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_MEMORYSTATUSEX_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtMemoryStatusEx {
+  uint32_t dwLength;
+  uint32_t dwMemoryLoad;
+  uint64_t ullTotalPhys;
+  uint64_t ullAvailPhys;
+  uint64_t ullTotalPageFile;
+  uint64_t ullAvailPageFile;
+  uint64_t ullTotalVirtual;
+  uint64_t ullAvailVirtual;
+  uint64_t ullAvailExtendedVirtual;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/msg.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_MSG_H_
+
+
+/*!BEGIN libc/nt/struct/point.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_POINT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtPoint {
+  int32_t x;
+  int32_t y;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtMsg {
+  int64_t hwnd;
+  uint32_t message;
+  uint64_t wParam;
+  int64_t lParam;
+  uint32_t time;
+  struct NtPoint pt;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/nonpageddebuginfo.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_NONPAGEDDEBUGINFO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtNonPagedDebugInfo {
+  uint16_t Signature;
+  uint16_t Flags;
+  uint32_t Size;
+  uint16_t Machine;
+  uint16_t Characteristics;
+  uint32_t TimeDateStamp;
+  uint32_t CheckSum;
+  uint32_t SizeOfImage;
+  uint64_t ImageBase;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/ntexceptionpointers.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_NTEXCEPTIONPOINTERS_H_
+
+
+/*!BEGIN libc/nt/struct/ntexceptionrecord.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_NTEXCEPTIONRECORD_H_
+
+#define kNtExceptionMaximumParameters 15
+#define kNtExceptionNoncontinuable 1
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtExceptionRecord {
+  uint32_t ExceptionCode;                    /* kNtException... */
+  uint32_t ExceptionFlags;                   /* kNtExceptionNoncontinuable */
+  struct NtExceptionRecord *ExceptionRecord; /* nested exceptions */
+  void *ExceptionAddress;                    /* %rip */
+  uint32_t NumberParameters;                 /* #ExceptionInformation */
+  uint32_t *ExceptionInformation[kNtExceptionMaximumParameters];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtExceptionPointers {
+  struct NtExceptionRecord *ExceptionRecord;
+  struct NtContext *ContextRecord;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/objectallinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_OBJECTALLINFORMATION_H_
+
+
+/*!BEGIN libc/nt/struct/objecttypeinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_OBJECTTYPEINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtObjectTypeInformation {
+  struct NtUnicodeString TypeName;
+  uint32_t TotalNumberOfObjects;
+  uint32_t TotalNumberOfHandles;
+  uint32_t TotalPagedPoolUsage;
+  uint32_t TotalNonPagedPoolUsage;
+  uint32_t TotalNamePoolUsage;
+  uint32_t TotalHandleTableUsage;
+  uint32_t HighWaterNumberOfObjects;
+  uint32_t HighWaterNumberOfHandles;
+  uint32_t HighWaterPagedPoolUsage;
+  uint32_t HighWaterNonPagedPoolUsage;
+  uint32_t HighWaterNamePoolUsage;
+  uint32_t HighWaterHandleTableUsage;
+  uint32_t InvalidAttributes;
+  struct NtGenericMapping GenericMapping;
+  uint32_t ValidAccessMask;
+  bool32 SecurityRequired;
+  bool32 MaintainHandleCount;
+  uint32_t PoolType;
+  uint32_t DefaultPagedPoolCharge;
+  uint32_t DefaultNonPagedPoolCharge;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtObjectAllInformation {
+  uint32_t NumberOfObjects;
+  struct NtObjectTypeInformation ObjectTypeInformation[1];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/objectattributes.h */
+
+#define COSMOPOLITAN_LIBC_NT_I_OBJECTATTRIBUTES_H_
+
+
+/*!BEGIN libc/nt/struct/rtluserprocessparameters.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_RTLUSERPROCESSPARAMETERS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtRtlUserProcessParameters {
+  uint32_t MaximumLength;
+  uint32_t Length;
+  uint32_t Flags;
+  uint32_t DebugFlags;
+  int64_t ConsoleHandle;
+  uint32_t ConsoleFlags;
+  int64_t StdInputHandle;
+  int64_t StdOutputHandle;
+  int64_t StdErrorHandle;
+  struct NtUnicodeString *CurrentDirectoryPath;
+  int64_t CurrentDirectoryHandle;
+  struct NtUnicodeString *DllPath;
+  struct NtUnicodeString *ImagePathName;
+  struct NtUnicodeString *CommandLine;
+  void *Environment;
+  uint32_t StartingPositionLeft;
+  uint32_t StartingPositionTop;
+  uint32_t Width;
+  uint32_t Height;
+  uint32_t CharWidth;
+  uint32_t CharHeight;
+  uint32_t ConsoleTextAttributes;
+  uint32_t WindowFlags;
+  uint32_t ShowWindowFlags;
+  struct NtUnicodeString *WindowTitle;
+  struct NtUnicodeString *DesktopName;
+  struct NtUnicodeString *ShellInfo;
+  struct NtUnicodeString *RuntimeData;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtObjectAttributes {
+  uint32_t Length;
+  int64_t RootDirectory;
+  struct NtUnicodeString *ObjectName;
+  uint32_t Attributes; /* OBJ_INHERIT, etc. */
+  struct NtSecurityDescriptor *SecurityDescriptor;
+  void *SecurityQualityOfService;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/objectbasicinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_OBJECTBASICINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtObjectBasicInformation {
+  uint32_t Attributes;
+  uint32_t GrantedAccess;
+  uint32_t HandleCount;
+  uint32_t PointerCount;
+  uint32_t PagedPoolUsage;
+  uint32_t NonPagedPoolUsage;
+  uint32_t Reserved[3];
+  uint32_t NameInformationLength;
+  uint32_t TypeInformationLength;
+  uint32_t SecurityDescriptorLength;
+  int64_t CreateTime;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/objectnameinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_OBJECTNAMEINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtObjectNameInformation {
+  struct NtUnicodeString Name;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/openfilename.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_OPENFILENAME_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtOpenFilename {
+  uint32_t lStructSize;
+  int64_t hwndOwner;
+  int64_t hInstance;
+  const char16_t *lpstrFilter;
+  char16_t *lpstrCustomFilter;
+  uint32_t nMaxCustFilter;
+  uint32_t nFilterIndex;
+  char16_t *lpstrFile;
+  uint32_t nMaxFile;
+  char16_t *lpstrFileTitle;
+  uint32_t nMaxFileTitle;
+  const char16_t *lpstrInitialDir;
+  const char16_t *lpstrTitle;
+  uint32_t Flags;
+  uint16_t nFileOffset;
+  uint16_t nFileExtension;
+  const char16_t *lpstrDefExt;
+  intptr_t lCustData;
+  uint64_t (*lpfnHook)(int64_t, uint32_t, uint64_t, int64_t);
+  const char16_t *lpTemplateName;
+  void *pvReserved;
+  uint32_t dwReserved;
+  uint32_t FlagsEx;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/overlapped.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_OVERLAPPED_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtOverlapped {
+  uintptr_t Internal;
+  uintptr_t InternalHigh;
+  union {
+    struct {
+      uint32_t Offset;
+      uint32_t OffsetHigh;
+    };
+    void *Pointer;
+  };
+  int64_t hEvent;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/overlappedentry.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_OVERLAPPEDENTRY_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct NtOverlappedEntry {
+  uint32_t *lpCompletionKey;
+  struct NtOverlapped *lpOverlapped;
+  uint32_t *Internal;
+  uint32_t dwNumberOfBytesTransferred;
+};
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/paintstruct.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_PAINTSTRUCT_H_
+
+
+/*!BEGIN libc/nt/struct/rect.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_RECT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtRect {
+  int32_t left;
+  int32_t top;
+  int32_t right;
+  int32_t bottom;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtPaintStruct {
+  int64_t hdc;
+  bool32 fErase;
+  struct NtRect rcPaint;
+  bool32 fRestore;
+  bool32 fIncUpdate;
+  uint8_t rgbReserved[32];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/peb.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_PEB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtPeb {
+  union {
+    struct {
+      unsigned char InheritedAddressSpace;
+      unsigned char ReadImageFileExecOptions;
+      unsigned char BeingDebugged;
+      unsigned char __wut1;
+    };
+    uint64_t __wut2;
+  };
+  uint64_t Mutant;
+  uint64_t ImageBaseAddress;
+  struct NtLdr *Ldr;
+  uint64_t ProcessParameters;
+  uint64_t SubSystemData;
+  uint64_t ProcessHeap;
+  uint64_t FastPebLock;
+  uint64_t __wut3;
+  uint64_t __wut4;
+  uint64_t __wut5;
+  union {
+    uint64_t KernelCallbackTable;
+    uint64_t UserSharedInfoPtr;
+  };
+  uint32_t SystemReserved;
+  uint32_t __wut6;
+  uint64_t __wut7;
+  uint64_t TlsExpansionCounter;
+  uint64_t TlsBitmap;
+  uint32_t TlsBitmapBits[2];
+  uint64_t ReadOnlySharedMemoryBase;
+  uint64_t __wut8;
+  uint64_t ReadOnlyStaticServerData;
+  uint64_t AnsiCodePageData;
+  uint64_t OemCodePageData;
+  uint64_t UnicodeCaseTableData;
+  uint32_t NumberOfProcessors;
+#ifdef __x86_64__
+  uint32_t NtGlobalFlag;
+#else
+  uint64_t NtGlobalFlag;
+#endif
+  int64_t CriticalSectionTimeout;
+  uint64_t HeapSegmentReserve;
+  uint64_t HeapSegmentCommit;
+  uint64_t HeapDeCommitTotalFreeThreshold;
+  uint64_t HeapDeCommitFreeBlockThreshold;
+  uint32_t NumberOfHeaps;
+  uint32_t MaximumNumberOfHeaps;
+  uint64_t ProcessHeaps;
+  uint64_t GdiSharedHandleTable;
+  uint64_t ProcessStarterHelper;
+  uint64_t GdiDCAttributeList;
+  uint64_t LoaderLock;
+  union {
+    struct {
+      uint32_t OSMajorVersion;
+      uint32_t OSMinorVersion;
+    };
+    uint64_t OSVersion;
+  };
+  uint16_t OSBuildNumber;
+  uint16_t OSCSDVersion;
+  uint32_t OSPlatformId;
+  uint32_t ImageSubsystem;
+  uint32_t ImageSubsystemMajorVersion;
+  uint64_t ImageSubsystemMinorVersion;
+  union {
+    uint64_t ImageProcessAffinityMask;
+    uint64_t ActiveProcessAffinityMask;
+  };
+  uint64_t GdiHandleBuffer[38 - __SIZEOF_POINTER__];
+  uint64_t PostProcessInitRoutine;
+  uint64_t TlsExpansionBitmap;
+  uint32_t TlsExpansionBitmapBits[32];
+  uint64_t SessionId;
+  uint64_t AppCompatFlags;
+  uint64_t AppCompatFlagsUser;
+  uint64_t pShimData;
+  uint64_t AppCompatInfo;
+  struct NtUnicodeString CSDVersion;
+  uint64_t ActivationContextData;
+  uint64_t ProcessAssemblyStorageMap;
+  uint64_t SystemDefaultActivationContextData;
+  uint64_t SystemAssemblyStorageMap;
+  uint64_t MinimumStackCommit;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/pollfd.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_POLLFD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct sys_pollfd_nt {
+  int64_t handle;
+  int16_t events;
+  int16_t revents;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/privilegeset.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_PRIVILEGESET_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtPrivilegeSet {
+  uint32_t PrivilegeCount;
+  uint32_t Control;
+  struct NtLuidAndAttributes Privilege[1];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/processbasicinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_PROCESSBASICINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtProcessBasicInformation {
+  int32_t ExitStatus;
+  struct NtPeb *PebBaseAddress;
+  uint32_t *AffinityMask;
+  int32_t BasePriority;
+  int64_t UniqueProcessId;
+  int64_t InheritedFromUniqueProcessId;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/procthreadattributelist.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_PROCTHREADATTRIBUTELIST_H_
+
+struct NtProcThreadAttributeList;
+
+
+
+/*!BEGIN libc/nt/struct/rtluserprocessinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_RTLUSERPROCESSINFORMATION_H_
+
+
+/*!BEGIN libc/nt/struct/sectionimageinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SECTIONIMAGEINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSectionImageInformation {
+  void *EntryPoint;
+  uint32_t Unknown1;
+  uint32_t StackReserve;
+  uint32_t StackCommit;
+  uint32_t Subsystem;
+  uint16_t MinorSubsystemVersion;
+  uint16_t MajorSubsystemVersion;
+  uint32_t Unknown2;
+  uint32_t Characteristics;
+  uint16_t ImageNumber;
+  uint32_t IsExecutable;
+  uint8_t __wut1;
+  uint32_t __wut2[3];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtRtlUserProcessInformation {
+  uint32_t SizeOfThis;
+  int64_t ProcessHandle;
+  int64_t ThreadHandle;
+  struct NtClientId ClientId;
+  struct NtSectionImageInformation ImageInformation;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/size.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SIZE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct NtSize {
+  int32_t cx;
+  int32_t cy;
+};
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/startupinfoex.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_STARTUPINFOEX_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtStartupInfoEx {
+  struct NtStartupInfo StartupInfo;
+  struct NtProcThreadAttributeList *lpAttributeList;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systembasicinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMBASICINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemBasicInformation {
+  unsigned char Reserved1[4];
+  uint32_t MaximumIncrement;
+  uint32_t PhysicalPageSize;
+  uint32_t NumberOfPhysicalPages;
+  uint32_t LowestPhysicalPage;
+  uint32_t HighestPhysicalPage;
+  uint32_t AllocationGranularity;
+  uint32_t LowestUserAddress;
+  uint32_t HighestUserAddress;
+  uint32_t ActiveProcessors;
+  char NumberOfProcessors;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systemexceptioninformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMEXCEPTIONINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemExceptionInformation {
+  unsigned char Reserved1[16];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systemhandleentry.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMHANDLEENTRY_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemHandleEntry {
+  uint32_t OwnerPid;
+  unsigned char ObjectType;
+  unsigned char HandleFlags;
+  unsigned short HandleValue;
+  void *ObjectPointer;
+  uint32_t AccessMask;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systemhandleinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMHANDLEINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemHandleInformation {
+  uint32_t Count;
+  struct NtSystemHandleEntry Handle[1];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systeminfo.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMINFO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemInfo {
+  union {
+    uint32_t dwOemId;
+    struct {
+      uint16_t wProcessorArchitecture;
+      uint16_t wReserved;
+    };
+  };
+  uint32_t dwPageSize;
+  void *lpMinimumApplicationAddress;
+  void *lpMaximumApplicationAddress;
+  uintptr_t dwActiveProcessorMask;
+  uint32_t dwNumberOfProcessors;
+  uint32_t dwProcessorType;
+  uint32_t dwAllocationGranularity;
+  uint16_t wProcessorLevel;
+  uint16_t wProcessorRevision;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systeminterruptinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMINTERRUPTINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemInterruptInformation {
+  unsigned char Reserved1[24];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systemlookasideinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMLOOKASIDEINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemLookasideInformation {
+  unsigned char Reserved1[32];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systemperformanceinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMPERFORMANCEINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemPerformanceInformation {
+  int64_t IdleTime;
+  int64_t ReadTransferCount;
+  int64_t WriteTransferCount;
+  int64_t OtherTransferCount;
+  uint32_t ReadOperationCount;
+  uint32_t WriteOperationCount;
+  uint32_t OtherOperationCount;
+  uint32_t AvailablePages;
+  uint32_t TotalCommittedPages;
+  uint32_t TotalCommitLimit;
+  uint32_t PeakCommitment;
+  uint32_t PageFaults;
+  uint32_t WriteCopyFaults;
+  uint32_t TransitionFaults;
+  uint32_t CacheTransitionFaults;
+  uint32_t DemandZeroFaults;
+  uint32_t PagesRead;
+  uint32_t PageReadIos;
+  uint32_t CacheReads;
+  uint32_t CacheIos;
+  uint32_t PagefilePagesWritten;
+  uint32_t PagefilePageWriteIos;
+  uint32_t MappedFilePagesWritten;
+  uint32_t MappedFilePageWriteIos;
+  uint32_t PagedPoolUsage;
+  uint32_t NonPagedPoolUsage;
+  uint32_t PagedPoolAllocs;
+  uint32_t PagedPoolFrees;
+  uint32_t NonPagedPoolAllocs;
+  uint32_t NonPagedPoolFrees;
+  uint32_t TotalFreeSystemPtes;
+  uint32_t SystemCodePage;
+  uint32_t TotalSystemDriverPages;
+  uint32_t TotalSystemCodePages;
+  uint32_t SmallNonPagedLookasideListAllocateHits;
+  uint32_t SmallPagedLookasideListAllocateHits;
+  uint32_t Reserved3;
+  uint32_t MmSystemCachePage;
+  uint32_t PagedPoolPage;
+  uint32_t SystemDriverPage;
+  uint32_t FastReadNoWait;
+  uint32_t FastReadWait;
+  uint32_t FastReadResourceMiss;
+  uint32_t FastReadNotPossible;
+  uint32_t FastMdlReadNoWait;
+  uint32_t FastMdlReadWait;
+  uint32_t FastMdlReadResourceMiss;
+  uint32_t FastMdlReadNotPossible;
+  uint32_t MapDataNoWait;
+  uint32_t MapDataWait;
+  uint32_t MapDataNoWaitMiss;
+  uint32_t MapDataWaitMiss;
+  uint32_t PinMappedDataCount;
+  uint32_t PinReadNoWait;
+  uint32_t PinReadWait;
+  uint32_t PinReadNoWaitMiss;
+  uint32_t PinReadWaitMiss;
+  uint32_t CopyReadNoWait;
+  uint32_t CopyReadWait;
+  uint32_t CopyReadNoWaitMiss;
+  uint32_t CopyReadWaitMiss;
+  uint32_t MdlReadNoWait;
+  uint32_t MdlReadWait;
+  uint32_t MdlReadNoWaitMiss;
+  uint32_t MdlReadWaitMiss;
+  uint32_t ReadAheadIos;
+  uint32_t LazyWriteIos;
+  uint32_t LazyWritePages;
+  uint32_t DataFlushes;
+  uint32_t DataPages;
+  uint32_t ContextSwitches;
+  uint32_t FirstLevelTbFills;
+  uint32_t SecondLevelTbFills;
+  uint32_t SystemCalls;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systemprocessinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMPROCESSINFORMATION_H_
+
+
+/*!BEGIN libc/nt/struct/vmcounters.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_VMCOUNTERS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtVmCounters {
+  size_t PeakVirtualSize;
+  size_t VirtualSize;
+  uint32_t PageFaultCount;
+  size_t PeakWorkingSetSize;
+  size_t WorkingSetSize;
+  size_t QuotaPeakPagedPoolUsage;
+  size_t QuotaPagedPoolUsage;
+  size_t QuotaPeakNonPagedPoolUsage;
+  size_t QuotaNonPagedPoolUsage;
+  size_t PagefileUsage;
+  size_t PeakPagefileUsage;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemProcessInformation {
+  uint32_t NextEntryOffset;
+  uint32_t NumberOfThreads;
+  int64_t Reserved[3];
+  int64_t CreateTime;
+  int64_t UserTime;
+  int64_t KernelTime;
+  struct NtUnicodeString ImageName;
+  int32_t BasePriority;
+  int64_t UniqueProcessId;
+  int64_t InheritedFromUniqueProcessId;
+  uint32_t HandleCount;
+  uint32_t SessionId;
+  uint32_t PageDirectoryBase;
+  struct NtVmCounters VirtualMemoryCounters;
+  size_t PrivatePageCount;
+  struct NtIoCounters IoCounters;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systemprocessorinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMPROCESSORINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemProcessorInformation {
+  unsigned short ProcessorArchitecture;
+  unsigned short ProcessorLevel;
+  unsigned short ProcessorRevision;
+  unsigned short Unknown;
+  uint32_t FeatureBits;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systemprocessorperformanceinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMPROCESSORPERFORMANCEINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemProcessorPerformanceInformation {
+  int64_t IdleTime;
+  int64_t KernelTime;
+  int64_t UserTime;
+  int64_t Reserved1[2];
+  uint32_t Reserved2;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systemregistryquotainformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMREGISTRYQUOTAINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemRegistryQuotaInformation {
+  uint32_t RegistryQuotaAllowed;
+  uint32_t RegistryQuotaUsed;
+  void *Reserved1;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systemthreads.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMTHREADS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemThreads {
+  int64_t KernelTime;
+  int64_t UserTime;
+  int64_t CreateTime;
+  uint32_t WaitTime;
+  void *StartAddress;
+  struct NtClientId ClientId;
+  int32_t Priority;
+  int32_t BasePriority;
+  uint32_t ContextSwitchCount;
+  int State;
+  uint32_t WaitReason;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systemtime.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMTIME_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemTime {
+  uint16_t wYear;
+  uint16_t wMonth;
+  uint16_t wDayOfWeek;
+  uint16_t wDay;
+  uint16_t wHour;
+  uint16_t wMinute;
+  uint16_t wSecond;
+  uint16_t wMilliseconds;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/systemtimeofdayinformation.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMTIMEOFDAYINFORMATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtSystemTimeofdayInformation {
+  int64_t BootTime;
+  int64_t CurrentTime;
+  int64_t TimeZoneBias;
+  uint32_t CurrentTimeZoneId;
+  unsigned char Reserved1[20];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/teb.h */
+
+#define COSMOPOLITAN_LIBC_NT_TEB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+
+/*
+ * These macros address directly into NT's TEB a.k.a. TIB
+ * Any function that does this needs the `noasan` keyword
+ */
+#define NtGetPeb()           gs((struct NtPeb **)(0x60ULL))
+#define NtGetTeb()           gs((void **)(0x30))    /* %gs:0 linear address */
+#define NtGetPid()           gs((uint32_t *)(0x40)) /* GetCurrentProcessId() */
+#define NtGetTid()           gs((uint32_t *)(0x48)) /* GetCurrentThreadId() */
+#define NtGetErr()           gs((int *)(0x68))
+#define _NtGetSeh()          gs((void **)(0x00))
+#define _NtGetStackHigh()    gs((void **)(0x08))
+#define _NtGetStackLow()     gs((void **)(0x10))
+#define _NtGetSubsystemTib() gs((void **)(0x18))
+#define _NtGetFib()          gs((void **)(0x20))
+#define _NtGetEnv()          gs((char16_t **)(0x38))
+#define _NtGetRpc()          gs((void **)(0x50))
+#define _NtGetTls()          gs((void **)(0x58))
+
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/tokenprivileges.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_TOKENPRIVILEGES_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtTokenPrivileges {
+  uint32_t PrivilegeCount;
+  struct NtLuidAndAttributes Privileges[1];
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/userstack.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_NTUSERSTACK_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtUserStack {
+  void *FixedStackBase;
+  void *FixedStackLimit;
+  void *ExpandableStackBase;
+  void *ExpandableStackLimit;
+  void *ExpandableStackBottom;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/valent.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_VALENT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtValent {
+  char16_t *ve_valuename;
+  uint32_t ve_valuelen;
+  uintptr_t ve_valueptr;
+  uint32_t ve_type;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/win32fileattributedata.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_WIN32FILEATTRIBUTEDATA_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtWin32FileAttributeData {
+  uint32_t dwFileAttributes; /* ←NtFileFlagAndAttributes */
+  struct NtFileTime ftCreationTime;
+  struct NtFileTime ftLastAccessTime;
+  struct NtFileTime ftLastWriteTime;
+  uint32_t nFileSizeHigh;
+  uint32_t nFileSizeLow;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/win32finddata.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_WIN32FINDDATA_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtWin32FindData {
+  uint32_t dwFileAttributes;
+  struct NtFileTime ftCreationTime;
+  struct NtFileTime ftLastAccessTime;
+  struct NtFileTime ftLastWriteTime;
+  uint32_t nFileSizeHigh;
+  uint32_t nFileSizeLow;
+  uint32_t dwReserved0;
+  uint32_t dwReserved1;
+  char16_t cFileName[260];
+  char16_t cAlternateFileName[14];
+  uint32_t dwFileType;
+  uint32_t dwCreatorType;
+  uint16_t wFinderFlags;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/windowplacement.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_WINDOWPLACEMENT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct NtWindowPlacement {
+  uint32_t length;
+  uint32_t flags;
+  uint32_t showCmd;
+  struct NtPoint ptMinPosition;
+  struct NtPoint ptMaxPosition;
+  struct NtRect rcNormalPosition;
+  struct NtRect rcDevice;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/wndclass.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_WNDCLASS_H_
+
+
+/*!BEGIN libc/nt/typedef/wndproc.h */
+
+#define COSMOPOLITAN_LIBC_NT_TYPEDEF_WNDPROC_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+typedef int64_t (*NtWndProc)(int64_t, uint32_t, uint64_t, int64_t);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct NtWndClass {
+  uint32_t style;
+  NtWndProc lpfnWndProc;
+  int32_t cbClsExtra;
+  int32_t cbWndExtra;
+  int64_t hInstance;
+  int64_t hIcon;
+  int64_t hCursor;
+  int64_t hbrBackground;
+  const char16_t *lpszMenuName;
+  const char16_t *lpszClassName;
+};
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/struct/wndclassex.h */
+
+#define COSMOPOLITAN_LIBC_NT_STRUCT_WNDCLASSEX_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct NtWndClassEx {
+  uint32_t cbSize;
+  uint32_t style;
+  NtWndProc lpfnWndProc;
+  int32_t cbClsExtra;
+  int32_t cbWndExtra;
+  int64_t hInstance;
+  int64_t hIcon;
+  int64_t hCursor;
+  int64_t hbrBackground;
+  const char16_t *lpszMenuName;
+  const char16_t *lpszClassName;
+  int64_t hIconSm;
+};
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/typedef/exceptionhandler.h */
+
+#define COSMOPOLITAN_LIBC_NT_TYPEDEF_EXCEPTIONHANDLER_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+typedef unsigned (*NtExceptionHandler)(struct NtExceptionRecord *,
+                                       struct NtExceptionFrame *,
+                                       struct NtContext *, void *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/typedef/handlerroutine.h */
+
+#define COSMOPOLITAN_LIBC_NT_TYPEDEF_HANDLERROUTINE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef bool32 (*NtHandlerRoutine)(uint32_t);
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/typedef/hookproc.h */
+
+#define COSMOPOLITAN_LIBC_NT_TYPEDEF_HOOKPROC_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef intptr_t (*NtHookProc)(int code, uintptr_t wParam, intptr_t lParam);
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/typedef/imagetlscallback.h */
+
+#define COSMOPOLITAN_LIBC_NT_TYPEDEF_IMAGETLSCALLBACK_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef void (*NtImageTlsCallback)(void *DllHandle, uint32_t Reason,
+                                   void *Reserved);
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/typedef/ioapcroutine.h */
+
+#define COSMOPOLITAN_LIBC_NT_TYPEDEF_IOAPCROUTINE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef void (*NtIoApcRoutine)(void *ApcContext,
+                               struct NtIoStatusBlock *IoStatusBlock,
+                               uint32_t Reserved);
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/typedef/pknormalroutine.h */
+
+#define COSMOPOLITAN_LIBC_NT_TYPEDEF_PKNORMALROUTINE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef void (*NtPkNormalRoutine)(void *NormalContext, void *SystemArgument1,
+                                  void *SystemArgument2);
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/typedef/timerproc.h */
+
+#define COSMOPOLITAN_LIBC_NT_TYPEDEF_TIMERPROC_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef void (*NtTimerProc)(int64_t, uint32_t, uintptr_t, uint32_t);
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/typedef/wambda.h */
+
+#define COSMOPOLITAN_LIBC_NT_WAMBDA_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+typedef intptr_t (*wambda)();
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/typedef/wndenumproc.h */
+
+#define COSMOPOLITAN_LIBC_NT_TYPEDEF_WNDENUMPROC_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef int (*NtWndEnumProc)(int64_t foo, intptr_t bar);
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/thunk/msabi.h */
+
+#define COSMOPOLITAN_LIBC_NT_THUNK_MSABI_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+#if !defined(__STRICT_ANSI__) &&               \
+    (__GNUC__ * 100 + __GNUC_MINOR__ >= 408 || \
+     (__has_attribute(__ms_abi__) || defined(__llvm__)))
+/**
+ * Defines function as using Microsoft x64 calling convention.
+ *
+ * This can be used to define prototypes that allow modern compilers to
+ * generate code that calls MS ABI functions directly, without needing
+ * to jump through the assembly thunks.
+ */
+#define __msabi __attribute__((__ms_abi__))
+#endif
+
+/*
+ * Returns true if header should provide MS-ABI overrides.
+ */
+#ifndef ShouldUseMsabiAttribute
+#if defined(__msabi) && defined(NDEBUG) && !defined(__PG__)
+#define ShouldUseMsabiAttribute() 1
+#else
+#define ShouldUseMsabiAttribute() 0
+#endif
+#endif
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/nt/debug.h */
+
+#define COSMOPOLITAN_LIBC_NT_NT_DEBUG_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » beyond the pale » debugging              ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+    “The functions and structures in [for these APIs] are internal to
+     the operating system and subject to change from one release of
+     Windows to the next, and possibly even between service packs for
+     each release.” ──Quoth MSDN */
+
+NtStatus NtContinue(struct NtContext *Context, int32_t TestAlert);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/nt/file.h */
+
+#define COSMOPOLITAN_LIBC_NT_NT_FILE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » beyond the pale » files                  ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+    “The functions and structures in [for these APIs] are internal to
+     the operating system and subject to change from one release of
+     Windows to the next, and possibly even between service packs for
+     each release.” ──Quoth MSDN */
+
+struct NtIoStatusBlock;
+struct NtObjectAttributes;
+
+NtStatus NtClose(int64_t handle);
+
+NtStatus NtCreateFile(int64_t *out_FileHandle, uint32_t DesiredAccess,
+                      struct NtObjectAttributes *ObjectAttributes,
+                      struct NtIoStatusBlock *out_IoStatusBlock,
+                      int64_t *opt_AllocationSize, uint32_t FileAttributes,
+                      uint32_t ShareAccess, uint32_t CreateDisposition,
+                      uint32_t CreateOptions, void *opt_EaBuffer,
+                      uint32_t EaLength);
+
+NtStatus NtReadFile(int64_t FileHandle, void *opt_Event,
+                    NtIoApcRoutine opt_ApcRoutine, void *opt_ApcContext,
+                    struct NtIoStatusBlock *out_IoStatusBlock, void *out_Buffer,
+                    uint32_t Length, int64_t *opt_ByteOffset,
+                    uint32_t *opt_Key);
+
+NtStatus NtWriteFile(int64_t FileHandle, void *opt_Event,
+                     NtIoApcRoutine opt_ApcRoutine, void *opt_ApcContext,
+                     struct NtIoStatusBlock *out_IoStatusBlock,
+                     const void *Buffer, uint32_t Length,
+                     int64_t *opt_ByteOffset, uint32_t *opt_Key);
+
+NtStatus NtDuplicateObject(int64_t SourceProcessHandle, void *SourceHandle,
+                           void *TargetProcessHandle,
+                           void **opt_out_TargetHandle, uint32_t DesiredAcess,
+                           uint32_t Atrributes, uint32_t options_t);
+
+NtStatus NtQueryInformationFile(int64_t FileHandle,
+                                struct NtIoStatusBlock *out_IoStatusBlock,
+                                void *out_FileInformation,
+                                uint32_t FileInformationLength,
+                                uint32_t FileInformationClass);
+
+NtStatus NtSetInformationFile(int64_t FileHandle,
+                              struct NtIoStatusBlock *out_IoStatusBlock,
+                              void *FileInformation,
+                              uint32_t FileInformationLength,
+                              uint32_t FileInformationClass);
+
+NtStatus NtDeviceIoControlFile(
+    int64_t FileHandle, int64_t opt_Event, NtIoApcRoutine opt_ApcRoutine,
+    void *opt_ApcContext, struct NtIoStatusBlock *out_IoStatusBlock,
+    uint32_t IoControlCode, void *opt_InputBuffer, uint32_t InputBufferLength,
+    void *opt_out_OutputBuffer, uint32_t OutputBufferLength);
+
+NtStatus NtCancelIoFileEx(int64_t FileHandle,
+                          struct NtIoStatusBlock *IoRequestToCancel,
+                          struct NtIoStatusBlock *IoStatusBlock);
+
+NtStatus RtlNtStatusToDosError(NtStatus Status);
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/thunk/ntfile.inc */
+
+#define NtQueryInformationFile(...) __imp_NtQueryInformationFile(__VA_ARGS__)
+
+extern typeof(NtQueryInformationFile) *const
+    __imp_NtQueryInformationFile __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/nt/ipc.h */
+
+#define COSMOPOLITAN_LIBC_NT_NT_IPC_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » beyond the pale » ipc                    ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+    “The functions and structures in [for these APIs] are internal to
+     the operating system and subject to change from one release of
+     Windows to the next, and possibly even between service packs for
+     each release.” ──Quoth MSDN */
+
+struct NtIoStatusBlock;
+struct NtObjectAttributes;
+
+NtStatus NtCreateNamedPipeFile(int64_t *out_FileHandle, uint32_t DesiredAccess,
+                               struct NtObjectAttributes *ObjectAttributes,
+                               struct NtIoStatusBlock *out_IoStatusBlock,
+                               uint32_t ShareAccess, uint32_t CreateDisposition,
+                               uint32_t CreateOptions, int32_t TypeMessage,
+                               int32_t ReadmodeMessage, int32_t Nonblocking,
+                               uint32_t MaxInstances, uint32_t InBufferSize,
+                               uint32_t OutBufferSize,
+                               int64_t *opt_DefaultTimeout);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/nt/key.h */
+
+#define COSMOPOLITAN_LIBC_NT_NT_EVENT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » beyond the pale » files                  ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+    “The functions and structures in [for these APIs] are internal to
+     the operating system and subject to change from one release of
+     Windows to the next, and possibly even between service packs for
+     each release.” ──Quoth MSDN */
+
+NtStatus NtCreateKeyedEvent(int64_t *KeyedEventHandle, uint32_t DesiredAccess,
+                            struct NtObjectAttributes *ObjectAttributes,
+                            uint32_t Flags);
+
+NtStatus NtReleaseKeyedEvent(int64_t KeyedEventHandle, void *KeyValue,
+                             bool32 Alertable, int64_t *Timeout);
+
+NtStatus NtWaitForKeyedEvent(int64_t KeyedEventHandle, void *KeyValue,
+                             bool32 Alertable, int64_t *Timeout);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/nt/loader.h */
+
+#define COSMOPOLITAN_LIBC_NT_NT_LOADER_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » beyond the pale » loader                 ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+    “The functions and structures in [for these APIs] are internal to
+     the operating system and subject to change from one release of
+     Windows to the next, and possibly even between service packs for
+     each release.” ──Quoth MSDN */
+
+struct NtAnsiString;
+struct NtLdrDataTableEntry;
+struct NtUnicodeString;
+
+NtStatus LdrLoadDll(const char16_t *opt_PathToFile, uint32_t *opt_Flags,
+                    struct NtUnicodeString *ModuleFileName,
+                    void **out_ModuleHandle);
+NtStatus LdrUnloadDll(void *ModuleHandle);
+NtStatus LdrGetProcedureAddress(void *ModuleHandle,
+                                struct NtAnsiString *opt_ProcedureName,
+                                uint32_t opt_Ordinal,
+                                wambda *out_ProcedureAddress);
+NtStatus LdrGetDllHandle(const char16_t *opt_PathToFile, uint32_t opt_Unused,
+                         struct NtUnicodeString *ModuleFileName,
+                         void **out_ModuleHandle);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/nt/memory.h */
+
+#define COSMOPOLITAN_LIBC_NT_NT_MEMORY_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » beyond the pale » memory                 ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+    “The functions and structures in [for these APIs] are internal to
+     the operating system and subject to change from one release of
+     Windows to the next, and possibly even between service packs for
+     each release.” ──Quoth MSDN */
+
+NtStatus NtAllocateVirtualMemory(int64_t ProcessHandle,
+                                 void **inout_BaseAddress, uint32_t dwZeroBits,
+                                 uint32_t *inout_AllocationSize,
+                                 uint32_t dwMemAllocationType,
+                                 uint32_t dwPageProtect);
+NtStatus NtFreeVirtualMemory(int64_t ProcessHandle, void **inout_BaseAddress,
+                             size_t *inout_FreeSize, uint32_t FreeType);
+NtStatus NtQueryVirtualMemory(int64_t ProcessHandle, const void *BaseAddress,
+                              int MemoryInformationClass,
+                              void *out_MemoryInformation,
+                              size_t MemoryInformationLength,
+                              size_t *opt_out_ReturnLength);
+NtStatus NtProtectVirtualMemory(int64_t ProcessHandle, void **inout_BaseAddress,
+                                uint32_t *inout_ProtectSize,
+                                uint32_t NewProtect, uint32_t *out_OldProtect);
+NtStatus NtWriteVirtualMemory(int64_t ProcessHandle, void *BaseAddress,
+                              const void *Buffer, size_t BufferLength,
+                              size_t *opt_out_ReturnLength);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/nt/process.h */
+
+#define COSMOPOLITAN_LIBC_NT_NT_PROCESS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » beyond the pale » processes              ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+    “The functions and structures in [for these APIs] are internal to
+     the operating system and subject to change from one release of
+     Windows to the next, and possibly even between service packs for
+     each release.” ──Quoth MSDN */
+
+struct NtClientId;
+struct NtObjectAttributes;
+struct NtRtlUserProcessInformation;
+struct NtRtlUserProcessParameters;
+struct NtSecurityDescriptor;
+struct NtUnicodeString;
+
+NtStatus NtCreateProcess(int64_t *out_ProcessHandle, uint32_t dwDesiredAccess,
+                         struct NtObjectAttributes *opt_ObjectAttributes,
+                         void *InheritFromProcessHandle, int32_t InheritHandles,
+                         void *opt_SectionHandle, void *opt_DebugPort,
+                         void *opt_ExceptionPort);
+NtStatus NtTerminateProcess(int64_t opt_ProcessHandle, int32_t ExitStatus);
+
+NtStatus NtQueryInformationProcess(int64_t ProcessHandle,
+                                   int ProcessInformationClass,
+                                   void *out_ProcessInformation,
+                                   uint32_t ProcessInformationLength,
+                                   uint32_t *opt_out_ReturnLength);
+NtStatus NtOpenProcessToken(int64_t ProcessToken, uint32_t DesiredAccess,
+                            int64_t *out_TokenHandle);
+NtStatus NtOpenProcess(int64_t *out_ProcessHandle, uint32_t DesiredAccess,
+                       struct NtObjectAttributes *ObjectAttributes,
+                       struct NtClientId *ClientId);
+
+NtStatus RtlCreateProcessParameters(
+    struct NtRtlUserProcessParameters **out_ProcessParameters,
+    struct NtUnicodeString *ImageFile, struct NtUnicodeString *opt_DllPath,
+    struct NtUnicodeString *opt_CurrentDirectory,
+    struct NtUnicodeString *opt_CommandLine, uint32_t CreationFlags,
+    struct NtUnicodeString *opt_WindowTitle,
+    struct NtUnicodeString *opt_Desktop, struct NtUnicodeString *opt_Reserved,
+    struct NtUnicodeString *opt_Reserved2);
+
+NtStatus RtlDestroyProcessParameters(
+    struct NtRtlUserProcessParameters *ProcessParameters);
+
+NtStatus RtlCloneUserProcess(
+    uint32_t ProcessFlags,
+    struct NtSecurityDescriptor *opt_ProcessSecurityDescriptor,
+    struct NtSecurityDescriptor *opt_ThreadSecurityDescriptor,
+    void *opt_DebugPort,
+    struct NtRtlUserProcessInformation *ProcessInformation);
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/nt/thunk/process.inc */
+
+#define NtQueryInformationProcess(...) \
+  __imp_NtQueryInformationProcess(__VA_ARGS__)
+
+extern typeof(NtQueryInformationProcess) *const
+    __imp_NtQueryInformationProcess __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/nt/sections.h */
+
+#define COSMOPOLITAN_LIBC_NT_NT_SECTIONS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+NtStatus NtCreateSection(int64_t *out_SectionHandle, uint32_t DesiredAccess,
+                         struct NtObjectAttributes *ObjectAttributes,
+                         int64_t *opt_SectionSize, uint32_t Protect,
+                         uint32_t Attributes, int64_t FileHandle);
+NtStatus NtOpenSection(int64_t *out_SectionHandle, uint32_t DesiredAccess,
+                       struct NtObjectAttributes *ObjectAttributes);
+NtStatus NtMapViewOfSection(int64_t SectionHandle, int64_t ProcessHandle,
+                            void **inout_BaseAddress, uint32_t *ZeroBits,
+                            size_t CommitSize, int64_t *opt_inout_SectionOffset,
+                            size_t *inout_ViewSize, int InheritDisposition,
+                            uint32_t AllocationType, uint32_t Protect);
+NtStatus NtUnmapViewOfSection(int64_t ProcessHandle, void *BaseAddress);
+NtStatus NtQuerySection(int64_t SectionHandle, int SectionInformationClass,
+                        void *out_SectionInformation,
+                        uint32_t SectionInformationLength,
+                        uint32_t *opt_out_ResultLength);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/nt/signing.h */
+
+#define COSMOPOLITAN_LIBC_NT_NT_SIGNING_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » beyond the pale » code signing           ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+    “The functions and structures in [for these APIs] are internal to
+     the operating system and subject to change from one release of
+     Windows to the next, and possibly even between service packs for
+     each release.” ──Quoth MSDN */
+
+NtStatus CsrClientCallServer(void *inout_Message, void *unknown,
+                             uint32_t Opcode, uint32_t Size);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/nt/thread.h */
+
+#define COSMOPOLITAN_LIBC_NT_NT_THREAD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » beyond the pale » threads                ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+    “The functions and structures in [for these APIs] are internal to
+     the operating system and subject to change from one release of
+     Windows to the next, and possibly even between service packs for
+     each release.” ──Quoth MSDN */
+
+struct NtClientId;
+struct NtContext;
+struct NtObjectAttributes;
+struct NtUserStack;
+
+NtStatus NtCreateThread(int64_t *out_ThreadHandle, uint32_t DesiredAccess,
+                        struct NtObjectAttributes *ObjectAttributes,
+                        int64_t ProcessHandle, struct NtClientId *out_ClientId,
+                        struct NtContext *ThreadContext,
+                        struct NtUserStack *UserStack, int32_t CreateSuspended);
+
+NtStatus NtTerminateThread(void *opt_ThreadHandle, int32_t ExitStatus);
+
+NtStatus NtOpenThread(int64_t *out_ThreadHandle, uint32_t DesiredAccess,
+                      struct NtObjectAttributes *ObjectAttributes,
+                      struct NtClientId *ClientId);
+
+NtStatus NtQueryInformationThread(int64_t ThreadHandle,
+                                  enum NtThreadInfoClass ThreadInformationClass,
+                                  void *out_ThreadInformation,
+                                  uint32_t ThreadInformationLength,
+                                  uint32_t *opt_out_ReturnLength);
+
+NtStatus NtGetContextThread(int64_t ThreadHandle,
+                            struct NtContext *out_Context);
+NtStatus NtSetContextThread(int64_t ThreadHandle, struct NtContext *Context);
+NtStatus NtSuspendThread(int64_t ThreadHandle,
+                         uint32_t *opt_out_PreviousSuspendCount);
+NtStatus NtResumeThread(int64_t ThreadHandle,
+                        uint32_t *opt_out_PreviousSuspendCount);
+
+NtStatus NtOpenThreadToken(int64_t ThreadHandle, uint32_t DesiredAccess,
+                           int32_t OpenAsSelf, int64_t *out_TokenHandle);
+
+NtStatus NtSetInformationThread(int64_t ThreadHandle,
+                                enum NtThreadInfoClass ThreadInformationClass,
+                                void *ThreadInformation,
+                                uint32_t ThreadInformationLength);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/nt/time.h */
+
+#define COSMOPOLITAN_LIBC_NT_NT_THREAD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » beyond the pale » time                   ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+    “The functions and structures in [for these APIs] are internal to
+     the operating system and subject to change from one release of
+     Windows to the next, and possibly even between service packs for
+     each release.” ──Quoth MSDN */
+
+NtStatus NtDelayExecution(bool32 alertable, int64_t *AbsCobolOrNegRelHectoNano);
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/nt/thunk/time.inc */
+
+#define NtDelayExecution(...) __imp_NtDelayExecution(__VA_ARGS__)
+
+extern typeof(NtDelayExecution) *const __imp_NtDelayExecution __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/accounting.h */
+
+#define COSMOPOLITAN_LIBC_NT_ACCOUNTING_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » accounting                               ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+int GetUserName(char16_t (*buf)[257], uint32_t *in_out_size);
+bool32 GlobalMemoryStatusEx(struct NtMemoryStatusEx *lpBuffer);
+int32_t GetExitCodeProcess(int64_t hProcess, uint32_t *lpExitCode);
+int32_t GetProcessHandleCount(int64_t hProcess, uint32_t *pdwHandleCount);
+bool32 GetProcessTimes(int64_t hProcess,
+                       struct NtFileTime *out_lpCreationFileTime,
+                       struct NtFileTime *out_lpExitFileTime,
+                       struct NtFileTime *out_lpKernelFileTime,
+                       struct NtFileTime *out_lpUserFileTime);
+bool32 GetThreadTimes(int64_t hThread,
+                      struct NtFileTime *out_lpCreationFileTime,
+                      struct NtFileTime *out_lpExitFileTime,
+                      struct NtFileTime *out_lpKernelFileTime,
+                      struct NtFileTime *out_lpUserFileTime);
+int32_t GetProcessIoCounters(int64_t hProcess,
+                             struct NtIoCounters *lpIoCounters);
+int32_t GetProcessWorkingSetSize(int64_t hProcess,
+                                 uint64_t *lpMinimumWorkingSetSize,
+                                 uint64_t *lpMaximumWorkingSetSize);
+int32_t GetProcessWorkingSetSizeEx(int64_t hProcess,
+                                   uint64_t *lpMinimumWorkingSetSize,
+                                   uint64_t *lpMaximumWorkingSetSize,
+                                   uint32_t *Flags);
+int32_t SetProcessWorkingSetSize(int64_t hProcess,
+                                 uint64_t dwMinimumWorkingSetSize,
+                                 uint64_t dwMaximumWorkingSetSize);
+int32_t SetProcessWorkingSetSizeEx(int64_t hProcess,
+                                   uint64_t dwMinimumWorkingSetSize,
+                                   uint64_t dwMaximumWorkingSetSize,
+                                   uint32_t Flags);
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/thunk/accounting.inc */
+
+#define GetProcessTimes(...) __imp_GetProcessTimes(__VA_ARGS__)
+extern typeof(GetProcessTimes) *const __imp_GetProcessTimes __msabi;
+
+#define GetThreadTimes(...) __imp_GetThreadTimes(__VA_ARGS__)
+extern typeof(GetThreadTimes) *const __imp_GetThreadTimes __msabi;
+
+#define GetUserName(...) __imp_GetUserNameW(__VA_ARGS__)
+extern typeof(GetUserName) *const __imp_GetUserNameW __msabi;
+
+#define GetExitCodeProcess(...) __imp_GetExitCodeProcess(__VA_ARGS__)
+extern typeof(GetExitCodeProcess) *const __imp_GetExitCodeProcess __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/automation.h */
+
+#define COSMOPOLITAN_LIBC_NT_AUTOMATION_H_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » aol hacking                              ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int64_t GetShellWindow(void);
+int64_t GetDesktopWindow(void);
+int64_t GetParent(int64_t hWnd);
+int64_t SetParent(int64_t hWndChild, int64_t hWndNewParent);
+int32_t EnumChildWindows(int64_t hWndParent, NtWndEnumProc lpEnumFunc,
+                         intptr_t lParam);
+int64_t FindWindow(const char16_t *lpClassName, const char16_t *lpWindowName);
+int64_t FindWindowEx(int64_t hWndParent, int64_t hWndChildAfter,
+                     const char16_t *lpszClass, const char16_t *lpszWindow);
+int64_t GetWindow(int64_t hWnd, uint32_t uCmd);
+int64_t SetWindowsHook(int nFilterType, NtHookProc pfnFilterProc);
+int32_t UnhookWindowsHook(int nCode, NtHookProc pfnFilterProc);
+int64_t SetWindowsHookEx(int idHook, NtHookProc lpfn, int64_t hmod,
+                         uint32_t dwThreadId);
+int32_t UnhookWindowsHookEx(int64_t hhk);
+intptr_t CallNextHookEx(int64_t hhk, int nCode, uintptr_t wParam,
+                        intptr_t lParam);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/codegen.h */
+
+#define COSMOPOLITAN_LIBC_NT_CODEGEN_H_
+
+
+/*!BEGIN libc/nt/comdlg.h */
+
+#define COSMOPOLITAN_LIBC_NT_COMDLG_H_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » common dialogs                           ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+bool32 GetOpenFileName(struct NtOpenFilename *arg);
+bool32 GetSaveFileName(struct NtOpenFilename *arg);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/console.h */
+
+#define COSMOPOLITAN_LIBC_NT_CONSOLE_H_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » console                                  ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define kNtAttachParentProcess -1u
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+bool32 WriteConsoleOutput(int64_t hConsoleOutput,
+                          const struct NtCharInfo *lpBuffer,
+                          struct NtCoord dwBufferSize,
+                          struct NtCoord dwBufferCoord,
+                          struct NtSmallRect *lpWriteRegion);
+bool32 ReadConsoleInput(int64_t hConsoleInput, struct NtInputRecord *lpBuffer,
+                        uint32_t nLength, uint32_t *lpNumberOfEventsRead);
+bool32 PeekConsoleInput(int64_t hConsoleInput, struct NtInputRecord *lpBuffer,
+                        uint32_t nLength, uint32_t *lpNumberOfEventsRead);
+bool32 GetNumberOfConsoleInputEvent(int64_t hConsoleInput,
+                                    uint32_t *lpNumberOfEvents);
+bool32 ReadConsoleOutput(int64_t hConsoleOutput, struct NtCharInfo *lpBuffer,
+                         struct NtCoord dwBufferSize,
+                         struct NtCoord dwBufferCoord,
+                         struct NtSmallRect *lpReadRegion);
+bool32 WriteConsoleInput(int64_t hConsoleInput,
+                         const struct NtInputRecord *lpBuffer, uint32_t nLength,
+                         uint32_t *lpNumberOfEventsWritten);
+bool32 FlushConsoleInputBuffer(int64_t hConsoleInput);
+
+int64_t GetConsoleWindow(void);
+bool32 GetConsoleMode(int64_t hConsoleHandle, uint32_t *lpMode);
+bool32 SetConsoleMode(int64_t hConsoleHandle, uint32_t dwMode);
+int32_t AllocConsole(void);
+int32_t FreeConsole(void);
+int32_t AttachConsole(uint32_t dwProcessId);
+uint32_t GetConsoleTitle(char16_t *lpConsoleTitle, uint32_t nSize);
+int32_t SetConsoleTitle(const char16_t *lpConsoleTitle);
+bool32 GetConsoleScreenBufferInfo(
+    int64_t hConsoleOutput,
+    struct NtConsoleScreenBufferInfo *out_lpConsoleScreenBufferInfo);
+bool32 GetConsoleScreenBufferInfoEx(
+    int64_t hConsoleOutput,
+    struct NtConsoleScreenBufferInfoEx *in_out_lpConsoleScreenBufferInfo);
+bool32 SetConsoleScreenBufferInfoEx(
+    int64_t hConsoleOutput,
+    const struct NtConsoleScreenBufferInfoEx *lpConsoleScreenBufferInfo);
+bool32 SetConsoleScreenBufferSize(int64_t lpConsoleOutput,
+                                  struct NtCoord dwSize);
+struct NtCoord GetLargestConsoleWindowSize(int64_t hConsoleHandle);
+int32_t ReadConsole(int64_t hConsoleInput, void *lpBuffer,
+                    uint32_t nNumberOfCharsToRead,
+                    uint32_t *lpNumberOfCharsRead, void *lpReserved);
+int32_t WriteConsole(int64_t hConsoleOutput, const void *lpBuffer,
+                     uint32_t nNumberOfCharsToWrite,
+                     uint32_t *lpNumberOfCharsWritten, void *lpReserved)
+    paramsnonnull((2, 4));
+bool32 GetNumberOfConsoleMouseButtons(uint32_t *out_lpNumberOfMouseButtons)
+    paramsnonnull();
+bool32 GetConsoleSelectionInfo(
+    struct NtConsoleSelectionInfo *out_lpConsoleSelectionInfo);
+uint32_t WaitForInputIdle(int64_t hProcess, uint32_t dwMilliseconds);
+uint32_t GetConsoleCP(void);
+bool32 SetConsoleCP(uint32_t wCodePageID);
+bool32 SetConsoleOutputCP(uint32_t wCodePageID);
+uint32_t GetConsoleOutputCP(void);
+bool32 SetConsoleCtrlHandler(NtHandlerRoutine opt_HandlerRoutine, bool32 Add);
+bool32 GenerateConsoleCtrlEvent(uint32_t dwCtrlEvent,
+                                uint32_t dwProcessGroupId);
+
+bool32 GetConsoleCursorInfo(
+    int64_t hConsoleOutput,
+    struct NtConsoleCursorInfo *out_lpConsoleCursorInfo);
+bool32 SetConsoleCursorInfo(
+    int64_t hConsoleOutput,
+    const struct NtConsoleCursorInfo *lpConsoleCursorInfo);
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/thunk/console.inc */
+
+#define GetConsoleMode(...) __imp_GetConsoleMode(__VA_ARGS__)
+extern typeof(GetConsoleMode) *const __imp_GetConsoleMode __msabi;
+
+#define SetConsoleCP(...) __imp_SetConsoleCP(__VA_ARGS__)
+extern typeof(SetConsoleCP) *const __imp_SetConsoleCP __msabi;
+
+#define GetConsoleCP(...) __imp_GetConsoleCP(__VA_ARGS__)
+extern typeof(GetConsoleCP) *const __imp_GetConsoleCP __msabi;
+
+#define SetConsoleCtrlHandler(...) __imp_SetConsoleCtrlHandler(__VA_ARGS__)
+extern typeof(SetConsoleCtrlHandler) *const __imp_SetConsoleCtrlHandler __msabi;
+
+#define SetConsoleMode(...) __imp_SetConsoleMode(__VA_ARGS__)
+extern typeof(SetConsoleMode) *const __imp_SetConsoleMode __msabi;
+
+#define SetConsoleOutputCP(...) __imp_SetConsoleOutputCP(__VA_ARGS__)
+extern typeof(SetConsoleOutputCP) *const __imp_SetConsoleOutputCP __msabi;
+
+#define GetConsoleOutputCP(...) __imp_GetConsoleOutputCP(__VA_ARGS__)
+extern typeof(GetConsoleOutputCP) *const __imp_GetConsoleOutputCP __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/createfile.h */
+
+#define COSMOPOLITAN_LIBC_NT_CREATEFILE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int64_t CreateFile(
+    const char16_t *lpFileName, uint32_t dwDesiredAccess, uint32_t dwShareMode,
+    struct NtSecurityAttributes *opt_lpSecurityAttributes,
+    int dwCreationDisposition,
+    uint32_t dwFlagsAndAttributes, /* libc/nt/enum/fileflagandattributes.h */
+    int64_t opt_hTemplateFile) paramsnonnull((1));
+
+int64_t CreateFileA(
+    const char *lpFileName, uint32_t dwDesiredAccess, uint32_t dwShareMode,
+    struct NtSecurityAttributes *opt_lpSecurityAttributes,
+    int dwCreationDisposition,
+    uint32_t dwFlagsAndAttributes, /* libc/nt/enum/fileflagandattributes.h */
+    int64_t opt_hTemplateFile) paramsnonnull((1));
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/debug.h */
+
+#define COSMOPOLITAN_LIBC_NT_DEBUG_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » debugging                                ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+/* Some of these APIs were moved to system.h and libc.h */
+int32_t DebugBreakProcess(void *Process);
+int32_t DebugActiveProcess(uint32_t dwProcessId);
+int32_t DebugActiveProcessStop(uint32_t dwProcessId);
+int32_t CheckRemoteDebuggerPresent(int64_t hProcess, int *pbDebuggerPresent);
+int32_t ContinueDebugEvent(uint32_t dwProcessId, uint32_t dwThreadId,
+                           uint32_t dwContinueStatus);
+void FatalExit(int uExitCode);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/dll.h */
+
+#define COSMOPOLITAN_LIBC_NT_DLL_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » dynamic link libraries                   ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+int64_t LoadLibrary(const char16_t *lpLibFileName);
+int64_t LoadLibraryEx(const char16_t *lpLibFileName, int64_t hFile,
+                      uint32_t dwFlags);
+uint32_t GetModuleFileName(int64_t hModule, char16_t *lpFilename,
+                           uint32_t nSize);
+uint32_t GetModuleFileNameA(int64_t hModule, char *lpFilename, uint32_t nSize);
+intptr_t GetModuleHandle(const char *opt_lpModuleName);
+intptr_t GetModuleHandleW(const char16_t *opt_lpModuleName);
+void *GetProcAddress(int64_t hModule, const char *lpProcName);
+int32_t FreeResource(int64_t hResData);
+intptr_t LockResource(int64_t hResData);
+int32_t FreeLibrary(int64_t hLibModule);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/efi.h */
+
+#define COSMOPOLITAN_LIBC_NT_EFI_H_
+/*
+    ▐██ ░█████████▓   ▐██▌     ██▓░   ▐█▌  ▐██  ░██░    ▓█▌  ▓██▒     ▓██
+    ▐██     ░██░     ▒█▓██░    ████░  ▐█▌  ▐██  ░██░    ▓█▌  ▓███░   ▓███
+    ▐██     ░██░     ██░▐█▓    ██▒▓█░ ▐█▌  ▐██  ░██░    ▓█▌  ▓█▌▓█░ ▓█▒██
+    ▐██     ░██░    ▐█▌  ▓█▌   ██░░▓█░▐█▌  ▐██  ░██░    ▓█▌  ▓█▌░█▓▓█▒░██
+    ▐██     ░██░   ▒██▓█████░  ██░ ░▓▓▓█▌  ▐██  ░██░    ██░  ▓█▌ ░██▌ ░██
+    ▐██     ░██░   ▓█▌    ▓█▓  ██░  ░███▌  ▐██   ▐██▄▄▄▓█▓   ▓█▌      ░██
+╔────────────────────────────────────────────────────────────────────────────│─╗
+│ αcτµαlly pδrταblε εxεcµταblε § the unified extensible firmware interface ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define EFI_SUCCESS           0x8000000000000000
+#define EFI_LOAD_ERROR        0x8000000000000001
+#define EFI_INVALID_PARAMETER 0x8000000000000002
+#define EFI_UNSUPPORTED       0x8000000000000003
+#define EFI_BAD_BUFFER_SIZE   0x8000000000000004
+#define EFI_BUFFER_TOO_SMALL  0x8000000000000005
+#define EFI_NOT_READY         0x8000000000000006
+#define EFI_DEVICE_ERROR      0x8000000000000007
+#define EFI_WRITE_PROTECTED   0x8000000000000008
+#define EFI_OUT_OF_RESOURCES  0x8000000000000009
+#define EFI_VOLUME_CORRUPTED  0x800000000000000a
+#define EFI_VOLUME_FULL       0x800000000000000b
+#define EFI_NO_MEDIA          0x800000000000000c
+#define EFI_MEDIA_CHANGED     0x800000000000000d
+#define EFI_NOT_FOUND         0x800000000000000e
+#define EFI_ACCESS_DENIED     0x800000000000000f
+#define EFI_NO_RESPONSE       0x8000000000000010
+#define EFI_NO_MAPPING        0x8000000000000011
+#define EFI_TIMEOUT           0x8000000000000012
+#define EFI_NOT_STARTED       0x8000000000000013
+#define EFI_ALREADY_STARTED   0x8000000000000014
+#define EFI_ABORTED           0x8000000000000015
+#define EFI_ICMP_ERROR        0x8000000000000016
+#define EFI_TFTP_ERROR        0x8000000000000017
+#define EFI_PROTOCOL_ERROR    0x8000000000000018
+
+#define EFI_VARIABLE_NON_VOLATILE                          0x00000001
+#define EFI_VARIABLE_BOOTSERVICE_ACCESS                    0x00000002
+#define EFI_VARIABLE_RUNTIME_ACCESS                        0x00000004
+#define EFI_VARIABLE_HARDWARE_ERROR_RECORD                 0x00000008
+#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS            0x00000010
+#define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020
+#define EFI_VARIABLE_APPEND_WRITE                          0x00000040
+
+#define EFI_MEMORY_UC            0x0000000000000001U
+#define EFI_MEMORY_WC            0x0000000000000002U
+#define EFI_MEMORY_WT            0x0000000000000004U
+#define EFI_MEMORY_WB            0x0000000000000008U
+#define EFI_MEMORY_UCE           0x0000000000000010U
+#define EFI_MEMORY_WP            0x0000000000001000U
+#define EFI_MEMORY_RP            0x0000000000002000U
+#define EFI_MEMORY_XP            0x0000000000004000U
+#define EFI_MEMORY_RO            0x0000000000020000U
+#define EFI_MEMORY_NV            0x0000000000008000U
+#define EFI_MEMORY_MORE_RELIABLE 0x0000000000010000U
+#define EFI_MEMORY_RUNTIME       0x8000000000000000U
+
+#define EFI_OPTIONAL_PTR 0x00000001
+
+#define EFI_SCAN_NULL      0x0000
+#define EFI_SCAN_UP        0x0001
+#define EFI_SCAN_DOWN      0x0002
+#define EFI_SCAN_RIGHT     0x0003
+#define EFI_SCAN_LEFT      0x0004
+#define EFI_SCAN_HOME      0x0005
+#define EFI_SCAN_END       0x0006
+#define EFI_SCAN_INSERT    0x0007
+#define EFI_SCAN_DELETE    0x0008
+#define EFI_SCAN_PAGE_UP   0x0009
+#define EFI_SCAN_PAGE_DOWN 0x000A
+#define EFI_SCAN_F1        0x000B
+#define EFI_SCAN_F2        0x000C
+#define EFI_SCAN_F3        0x000D
+#define EFI_SCAN_F4        0x000E
+#define EFI_SCAN_F5        0x000F
+#define EFI_SCAN_F6        0x0010
+#define EFI_SCAN_F7        0x0011
+#define EFI_SCAN_F8        0x0012
+#define EFI_SCAN_F9        0x0013
+#define EFI_SCAN_F10       0x0014
+#define EFI_SCAN_ESC       0x0017
+
+#define EFI_EVT_TIMER                         0x80000000
+#define EFI_EVT_RUNTIME                       0x40000000
+#define EFI_EVT_NOTIFY_WAIT                   0x00000100
+#define EFI_EVT_NOTIFY_SIGNAL                 0x00000200
+#define EFI_EVT_SIGNAL_EXIT_BOOT_SERVICES     0x00000201
+#define EFI_EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202
+#define EFI_EVT_RUNTIME_CONTEXT               0x20000000
+
+#define LOADED_IMAGE_PROTOCOL                        \
+  {                                                  \
+    0x5B1B31A1, 0x9562, 0x11d2, {                    \
+      0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B \
+    }                                                \
+  }
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#define EFIAPI     __attribute__((__ms_abi__))
+#define EFI_STATUS uint64_t
+#define EFI_EVENT  uintptr_t
+#define EFI_HANDLE uintptr_t
+
+typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
+typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
+
+typedef enum {
+  EfiReservedMemoryType,
+  EfiLoaderCode,
+  EfiLoaderData,
+  EfiBootServicesCode,
+  EfiBootServicesData,
+  EfiRuntimeServicesCode,
+  EfiRuntimeServicesData,
+  EfiConventionalMemory,
+  EfiUnusableMemory,
+  EfiACPIReclaimMemory,
+  EfiACPIMemoryNVS,
+  EfiMemoryMappedIO,
+  EfiMemoryMappedIOPortSpace,
+  EfiPalCode,
+  EfiPersistentMemory,
+  EfiMaxMemoryType
+} EFI_MEMORY_TYPE;
+
+typedef enum {
+  EfiResetCold,
+  EfiResetWarm,
+  EfiResetShutdown,
+  EfiResetPlatformSpecific
+} EFI_RESET_TYPE;
+
+typedef enum {
+  AllocateAnyPages,
+  AllocateMaxAddress,
+  AllocateAddress,
+  MaxAllocateType
+} EFI_ALLOCATE_TYPE;
+
+typedef enum {
+  TimerCancel,
+  TimerPeriodic,
+  TimerRelative,
+} EFI_TIMER_DELAY;
+
+typedef struct {
+  uint32_t Resolution;
+  uint32_t Accuracy;
+  bool SetsToZero;
+} EFI_TIME_CAPABILITIES;
+
+typedef struct {
+  uint32_t Data1;
+  uint16_t Data2;
+  uint16_t Data3;
+  uint8_t Data4[8];
+} EFI_GUID;
+
+typedef struct {
+  uint16_t Year;
+  uint8_t Month;
+  uint8_t Day;
+  uint8_t Hour;
+  uint8_t Minute;
+  uint8_t Second;
+  uint8_t Pad1;
+  uint32_t Nanosecond;
+  int16_t TimeZone;
+  uint8_t Daylight;
+  uint8_t Pad2;
+} EFI_TIME;
+
+typedef struct {
+  uint32_t Type;
+  uint64_t PhysicalStart;
+  uint64_t VirtualStart;
+  uint64_t NumberOfPages;
+  uint64_t Attribute;
+} EFI_MEMORY_DESCRIPTOR;
+
+typedef struct {
+  EFI_GUID VendorGuid;
+  void *VendorTable;
+} EFI_CONFIGURATION_TABLE;
+
+typedef struct {
+  EFI_GUID CapsuleGuid;
+  uint32_t HeaderSize;
+  uint32_t Flags;
+  uint32_t CapsuleImageSize;
+} EFI_CAPSULE_HEADER;
+
+typedef struct {
+  uint16_t ScanCode;
+  char16_t UnicodeChar;
+} EFI_INPUT_KEY;
+
+typedef struct {
+  int32_t MaxMode;
+  int32_t Mode;
+  int32_t Attribute;
+  int32_t CursorColumn;
+  int32_t CursorRow;
+  bool CursorVisible;
+} EFI_SIMPLE_TEXT_OUTPUT_MODE;
+
+typedef struct {
+  uint64_t Signature;
+  uint32_t Revision;
+  uint32_t HeaderSize;
+  uint32_t CRC32;
+  uint32_t Reserved;
+} EFI_TABLE_HEADER;
+
+typedef struct {
+  uint8_t Type;
+  uint8_t SubType;
+  uint8_t Length[2];
+} EFI_DEVICE_PATH_PROTOCOL;
+
+typedef EFI_STATUS(EFIAPI *EFI_EXIT)(EFI_HANDLE ImageHandle,
+                                     EFI_STATUS ExitStatus,
+                                     uintptr_t ExitDataSize,
+                                     char16_t *opt_ExitData);
+
+typedef EFI_STATUS(EFIAPI *EFI_GET_VARIABLE)(char16_t *VariableName,
+                                             EFI_GUID *VendorGuid,
+                                             uint32_t *outopt_Attributes,
+                                             uintptr_t *inout_DataSize,
+                                             void *outopt_Data);
+typedef EFI_STATUS(EFIAPI *EFI_SET_VARIABLE)(char16_t *VariableName,
+                                             EFI_GUID *VendorGuid,
+                                             uint32_t Attributes,
+                                             uintptr_t DataSize, void *Data);
+typedef EFI_STATUS(EFIAPI *EFI_GET_NEXT_VARIABLE_NAME)(
+    uintptr_t *inout_VariableNameSize, char16_t *inout_VariableName,
+    EFI_GUID *inout_VendorGuid);
+typedef EFI_STATUS(EFIAPI *EFI_QUERY_VARIABLE_INFO)(
+    uint32_t Attributes, uint64_t *out_MaximumVariableStorageSize,
+    uint64_t *out_RemainingVariableStorageSize,
+    uint64_t *out_MaximumVariableSize);
+
+typedef EFI_STATUS(EFIAPI *EFI_ALLOCATE_PAGES)(EFI_ALLOCATE_TYPE Type,
+                                               EFI_MEMORY_TYPE MemoryType,
+                                               uintptr_t Pages,
+                                               uint64_t *inout_Memory);
+typedef EFI_STATUS(EFIAPI *EFI_FREE_PAGES)(uint64_t Memory, uintptr_t Pages);
+typedef EFI_STATUS(EFIAPI *EFI_GET_MEMORY_MAP)(
+    uintptr_t *inout_MemoryMapSize, EFI_MEMORY_DESCRIPTOR *inout_MemoryMap,
+    uintptr_t *out_MapKey, uintptr_t *out_DescriptorSize,
+    uint32_t *out_DescriptorVersion);
+
+typedef EFI_STATUS(EFIAPI *EFI_ALLOCATE_POOL)(EFI_MEMORY_TYPE PoolType,
+                                              uintptr_t Size, void *out_Buffer);
+typedef EFI_STATUS(EFIAPI *EFI_FREE_POOL)(void *Buffer);
+typedef void(EFIAPI *EFI_SET_MEM)(void *Buffer, uintptr_t Size, uint8_t Value);
+typedef void(EFIAPI *EFI_COPY_MEM)(void *Destination, void *Source,
+                                   uintptr_t Length);
+
+typedef EFI_STATUS(EFIAPI *EFI_CHECK_EVENT)(EFI_EVENT Event);
+typedef EFI_STATUS(EFIAPI *EFI_CLOSE_EVENT)(EFI_EVENT Event);
+typedef EFI_STATUS(EFIAPI *EFI_SIGNAL_EVENT)(EFI_EVENT Event);
+typedef EFI_STATUS(EFIAPI *EFI_WAIT_FOR_EVENT)(uintptr_t NumberOfEvents,
+                                               EFI_EVENT *Events,
+                                               uintptr_t *out_Index);
+typedef EFI_STATUS(EFIAPI *EFI_SET_TIMER)(EFI_EVENT Event, EFI_TIMER_DELAY Type,
+                                          uint64_t TriggerTime);
+typedef void(EFIAPI *EFI_EVENT_NOTIFY)(EFI_EVENT Event, void *Context);
+typedef EFI_STATUS(EFIAPI *EFI_CREATE_EVENT)(uint32_t Type, uintptr_t NotifyTpl,
+                                             EFI_EVENT_NOTIFY NotifyFunction,
+                                             void *NotifyContext,
+                                             EFI_EVENT *out_Event);
+typedef EFI_STATUS(EFIAPI *EFI_CREATE_EVENT_EX)(
+    uint32_t Type, uintptr_t NotifyTpl, EFI_EVENT_NOTIFY opt_NotifyFunction,
+    const void *opt_NotifyContext, const EFI_GUID *opt_EventGroup,
+    EFI_EVENT *out_Event);
+
+typedef EFI_STATUS(EFIAPI *EFI_UPDATE_CAPSULE)(
+    EFI_CAPSULE_HEADER **CapsuleHeaderArray, uintptr_t CapsuleCount,
+    uint64_t opt_ScatterGatherList);
+typedef EFI_STATUS(EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES)(
+    EFI_CAPSULE_HEADER **CapsuleHeaderArray, uintptr_t CapsuleCount,
+    uint64_t *out_MaximumCapsuleSize, EFI_RESET_TYPE *out_ResetType);
+typedef EFI_STATUS(EFIAPI *EFI_GET_WAKEUP_TIME)(bool *out_Enabled,
+                                                bool *out_Pending,
+                                                EFI_TIME *out_Time);
+typedef EFI_STATUS(EFIAPI *EFI_SET_WAKEUP_TIME)(bool Enable,
+                                                EFI_TIME *opt_Time);
+typedef EFI_STATUS(EFIAPI *EFI_SET_WATCHDOG_TIMER)(uintptr_t Timeout,
+                                                   uint64_t WatchdogCode,
+                                                   uintptr_t DataSize,
+                                                   char16_t *opt_WatchdogData);
+
+typedef EFI_STATUS(EFIAPI *EFI_SET_TIME)(EFI_TIME *Time);
+typedef EFI_STATUS(EFIAPI *EFI_GET_TIME)(
+    EFI_TIME *out_Time, EFI_TIME_CAPABILITIES *outopt_Capabilities);
+typedef EFI_STATUS(EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT)(
+    uint32_t *out_HighCount);
+typedef EFI_STATUS(EFIAPI *EFI_STALL)(uintptr_t Microseconds);
+typedef EFI_STATUS(EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT)(uint64_t *out_Count);
+
+typedef EFI_STATUS(EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP)(
+    uintptr_t MemoryMapSize, uintptr_t DescriptorSize,
+    uint32_t DescriptorVersion, EFI_MEMORY_DESCRIPTOR *VirtualMap);
+typedef void(EFIAPI *EFI_RESET_SYSTEM)(EFI_RESET_TYPE ResetType,
+                                       EFI_STATUS ResetStatus,
+                                       uintptr_t DataSize, void *opt_ResetData);
+typedef EFI_STATUS(EFIAPI *EFI_CONVERT_POINTER)(uintptr_t DebugDisposition,
+                                                void **inout_Address);
+
+typedef EFI_STATUS(EFIAPI *EFI_INPUT_RESET)(
+    EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, bool ExtendedVerification);
+typedef EFI_STATUS(EFIAPI *EFI_INPUT_READ_KEY)(
+    EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, EFI_INPUT_KEY *out_Key);
+
+typedef EFI_STATUS(EFIAPI *EFI_TEXT_RESET)(
+    EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, bool ExtendedVerification);
+typedef EFI_STATUS(EFIAPI *EFI_TEXT_STRING)(
+    EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, char16_t *String);
+typedef EFI_STATUS(EFIAPI *EFI_TEXT_TEST_STRING)(
+    EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, char16_t *String);
+typedef EFI_STATUS(EFIAPI *EFI_TEXT_QUERY_MODE)(
+    EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, uint64_t ModeNumber,
+    uint64_t *out_Columns, uint64_t *out_Rows);
+typedef EFI_STATUS(EFIAPI *EFI_TEXT_SET_MODE)(
+    EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, uint64_t ModeNumber);
+typedef EFI_STATUS(EFIAPI *EFI_TEXT_SET_ATTRIBUTE)(
+    EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, uint64_t Attribute);
+typedef EFI_STATUS(EFIAPI *EFI_TEXT_CLEAR_SCREEN)(
+    EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This);
+typedef EFI_STATUS(EFIAPI *EFI_TEXT_SET_CURSOR_POSITION)(
+    EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, uint64_t Column, uint64_t Row);
+typedef EFI_STATUS(EFIAPI *EFI_TEXT_ENABLE_CURSOR)(
+    EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, bool Visible);
+
+typedef EFI_STATUS(EFIAPI *EFI_HANDLE_PROTOCOL)(EFI_HANDLE Handle,
+                                                EFI_GUID *Protocol,
+                                                void *out_Interface);
+
+typedef EFI_STATUS(EFIAPI *EFI_IMAGE_LOAD)(bool BootPolicy,
+                                           EFI_HANDLE ParentImageHandle,
+                                           EFI_DEVICE_PATH_PROTOCOL *DevicePath,
+                                           void *opt_SourceBuffer,
+                                           uintptr_t SourceSize,
+                                           EFI_HANDLE *out_ImageHandle);
+typedef EFI_STATUS(EFIAPI *EFI_IMAGE_UNLOAD)(EFI_HANDLE ImageHandle);
+typedef EFI_STATUS(EFIAPI *EFI_EXIT_BOOT_SERVICES)(EFI_HANDLE ImageHandle,
+                                                   uintptr_t MapKey);
+
+typedef struct {
+  EFI_TABLE_HEADER Hdr;
+  EFI_GET_TIME GetTime;
+  EFI_SET_TIME SetTime;
+  EFI_GET_WAKEUP_TIME GetWakeupTime;
+  EFI_SET_WAKEUP_TIME SetWakeupTime;
+  EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap;
+  EFI_CONVERT_POINTER ConvertPointer;
+  EFI_GET_VARIABLE GetVariable;
+  EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName;
+  EFI_SET_VARIABLE SetVariable;
+  EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount;
+  EFI_RESET_SYSTEM ResetSystem;
+  EFI_UPDATE_CAPSULE UpdateCapsule;
+  EFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities;
+  EFI_QUERY_VARIABLE_INFO QueryVariableInfo;
+} EFI_RUNTIME_SERVICES;
+
+typedef struct {
+  EFI_TABLE_HEADER Hdr;
+  void *RaiseTPL;
+  void *RestoreTPL;
+  EFI_ALLOCATE_PAGES AllocatePages;
+  EFI_FREE_PAGES FreePages;
+  EFI_GET_MEMORY_MAP GetMemoryMap;
+  EFI_ALLOCATE_POOL AllocatePool;
+  EFI_FREE_POOL FreePool;
+  EFI_CREATE_EVENT CreateEvent;
+  EFI_SET_TIMER SetTimer;
+  EFI_WAIT_FOR_EVENT WaitForEvent;
+  EFI_SIGNAL_EVENT SignalEvent;
+  EFI_CLOSE_EVENT CloseEvent;
+  EFI_CHECK_EVENT CheckEvent;
+  void *InstallProtocolInterface;
+  void *ReinstallProtocolInterface;
+  void *UninstallProtocolInterface;
+  EFI_HANDLE_PROTOCOL HandleProtocol;
+  void *Reserved;
+  void *RegisterProtocolNotify;
+  void *LocateHandle;
+  void *LocateDevicePath;
+  void *InstallConfigurationTable;
+  EFI_IMAGE_LOAD LoadImage;
+  void *StartImage;
+  EFI_EXIT Exit;
+  EFI_IMAGE_UNLOAD UnloadImage;
+  EFI_EXIT_BOOT_SERVICES ExitBootServices;
+  EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;
+  EFI_STALL Stall;
+  EFI_SET_WATCHDOG_TIMER SetWatchdogTimer;
+  void *ConnectController;
+  void *DisconnectController;
+  void *OpenProtocol;
+  void *CloseProtocol;
+  void *OpenProtocolInformation;
+  void *ProtocolsPerHandle;
+  void *LocateHandleBuffer;
+  void *LocateProtocol;
+  void *InstallMultipleProtocolInterfaces;
+  void *UninstallMultipleProtocolInterfaces;
+  void *CalculateCrc32;
+  EFI_COPY_MEM CopyMem;
+  EFI_SET_MEM SetMem;
+  EFI_CREATE_EVENT_EX CreateEventEx;
+} EFI_BOOT_SERVICES;
+
+typedef struct {
+  EFI_TABLE_HEADER Hdr;
+  char16_t *FirmwareVendor;
+  uint32_t FirmwareRevision;
+  EFI_HANDLE ConsoleInHandle;
+  EFI_SIMPLE_TEXT_INPUT_PROTOCOL *ConIn;
+  EFI_HANDLE ConsoleOutHandle;
+  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut;
+  EFI_HANDLE StandardErrorHandle;
+  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *StdErr;
+  EFI_RUNTIME_SERVICES *RuntimeServices;
+  EFI_BOOT_SERVICES *BootServices;
+  uintptr_t NumberOfTableEntries;
+  EFI_CONFIGURATION_TABLE *ConfigurationTable;
+} EFI_SYSTEM_TABLE;
+
+struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL {
+  EFI_INPUT_RESET Reset;
+  EFI_INPUT_READ_KEY ReadKeyStroke;
+  EFI_EVENT WaitForKey;
+};
+
+struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {
+  EFI_TEXT_RESET Reset;
+  EFI_TEXT_STRING OutputString;
+  EFI_TEXT_TEST_STRING TestString;
+  EFI_TEXT_QUERY_MODE QueryMode;
+  EFI_TEXT_SET_MODE SetMode;
+  EFI_TEXT_SET_ATTRIBUTE SetAttribute;
+  EFI_TEXT_CLEAR_SCREEN ClearScreen;
+  EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;
+  EFI_TEXT_ENABLE_CURSOR EnableCursor;
+  EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode;
+};
+
+typedef struct {
+  uint32_t Revision;
+  EFI_HANDLE ParentHandle;
+  EFI_SYSTEM_TABLE *SystemTable;
+  EFI_HANDLE DeviceHandle;
+  EFI_DEVICE_PATH_PROTOCOL *FilePath;
+  void *Reserved;
+  uint32_t LoadOptionsSize;
+  void *LoadOptions;
+  void *ImageBase;
+  uint64_t ImageSize;
+  EFI_MEMORY_TYPE ImageCodeType;
+  EFI_MEMORY_TYPE ImageDataType;
+  EFI_IMAGE_UNLOAD Unload;
+} EFI_LOADED_IMAGE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/errors.h */
+
+#define COSMOPOLITAN_NT_ERRORS_H_
+
+#define kNtErrorInsufficientBuffer 122
+
+#define kNtErrorSuccess 0
+#define kNtErrorInvalidFunction 1  /* ENOSYS */
+#define kNtErrorFileNotFound 2     /* ENOENT */
+#define kNtErrorPathNotFound 3     /* ENOTDIR */
+#define kNtErrorTooManyOpenFiles 4 /* EMFILE */
+#define kNtErrorAccessDenied 5     /* EACCES */
+#define kNtErrorInvalidHandle 6    /* EBADF */
+#define kNtErrorArenaTrashed 7
+#define kNtErrorNotEnoughMemory 8
+#define kNtErrorInvalidBlock 9
+#define kNtErrorBadEnvironment 10
+#define kNtErrorBadFormat 11
+#define kNtErrorInvalidAccess 12 /* EPERM */
+#define kNtErrorInvalidData 13
+#define kNtErrorOutofmemory 14 /* ENOMEM */
+#define kNtErrorInvalidDrive 15
+#define kNtErrorCurrentDirectory 16
+#define kNtErrorNotSameDevice 17
+#define kNtErrorNoMoreFiles 18
+#define kNtErrorWriteProtect 19
+#define kNtErrorBadUnit 20
+#define kNtErrorNotReady 21
+#define kNtErrorBadCommand 22
+#define kNtErrorCrc 23
+#define kNtErrorBadLength 24
+#define kNtErrorSeek 25       /* ESPIPE */
+#define kNtErrorNotDosDisk 26 /* ENOTBLK */
+#define kNtErrorSectorNotFound 27
+#define kNtErrorOutOfPaper 28
+#define kNtErrorWriteFault 29
+#define kNtErrorReadFault 30
+#define kNtErrorGenFailure 31
+#define kNtErrorSharingViolation 32
+#define kNtErrorLockViolation 33
+#define kNtErrorWrongDisk 34
+#define kNtErrorSharingBufferExceeded 36
+#define kNtErrorHandleEof 38 /* w/ GetOverlappedResult() */
+#define kNtErrorHandleDiskFull 39
+#define kNtErrorNotSupported 50
+#define kNtErrorRemNotList 51
+#define kNtErrorDupName 52
+#define kNtErrorBadNetpath 53
+#define kNtErrorNetworkBusy 54
+#define kNtErrorDevNotExist 55
+#define kNtErrorTooManyCmds 56
+#define kNtErrorAdapHdwErr 57
+#define kNtErrorBadNetResp 58
+#define kNtErrorUnexpNetErr 59
+#define kNtErrorBadRemAdap 60
+#define kNtErrorPrintqFull 61
+#define kNtErrorNoSpoolSpace 62
+#define kNtErrorPrintCancelled 63
+#define kNtErrorNetnameDeleted 64
+#define kNtErrorNetworkAccessDenied 65
+#define kNtErrorBadDevType 66
+#define kNtErrorBadNetName 67
+#define kNtErrorTooManyNames 68
+#define kNtErrorTooManySess 69
+#define kNtErrorSharingPaused 70
+#define kNtErrorReqNotAccep 71
+#define kNtErrorRedirPaused 72
+#define kNtErrorFileExists 80 /* EEXIST */
+#define kNtErrorCannotMake 82
+#define kNtErrorFailI24 83
+#define kNtErrorOutOfStructures 84
+#define kNtErrorAlreadyAssigned 85
+#define kNtErrorInvalidPassword 86
+#define kNtErrorInvalidParameter 87 /* EINVAL */
+#define kNtErrorNetWriteFault 88
+#define kNtErrorNoProcSlots 89
+#define kNtErrorTooManySemaphores 100
+#define kNtErrorExclSemAlreadyOwned 101
+#define kNtErrorSemIsSet 102
+#define kNtErrorTooManySemRequests 103
+#define kNtErrorInvalidAtInterruptTime 104
+#define kNtErrorSemOwnerDied 105
+#define kNtErrorSemUserLimit 106
+#define kNtErrorDiskChange 107
+#define kNtErrorDriveLocked 108
+#define kNtErrorBrokenPipe 109 /* EPIPE; happens on ReadFile() too */
+#define kNtErrorOpenFailed 110
+#define kNtErrorBufferOverflow 111
+#define kNtErrorDiskFull 112 /* ENOSPC */
+#define kNtErrorNoMoreSearchHandles 113
+#define kNtErrorInvalidTargetHandle 114
+#define kNtErrorInvalidCategory 117
+#define kNtErrorInvalidVerifySwitch 118
+#define kNtErrorBadDriverLevel 119
+#define kNtErrorCallNotImplemented 120
+#define kNtErrorSemTimeout 121
+#define kNtErrorInsufficientBuffer 122
+#define kNtErrorInvalidName 123
+#define kNtErrorInvalidLevel 124
+#define kNtErrorNoVolumeLabel 125
+#define kNtErrorModNotFound 126
+#define kNtErrorProcNotFound 127
+#define kNtErrorWaitNoChildren 128 /* ECHILD */
+#define kNtErrorChildNotComplete 129
+#define kNtErrorDirectAccessHandle 130
+#define kNtErrorNegativeSeek 131
+#define kNtErrorSeekOnDevice 132
+#define kNtErrorIsJoinTarget 133
+#define kNtErrorIsJoined 134
+#define kNtErrorIsSubsted 135
+#define kNtErrorNotJoined 136
+#define kNtErrorNotSubsted 137
+#define kNtErrorJoinToJoin 138
+#define kNtErrorSubstToSubst 139
+#define kNtErrorJoinToSubst 140
+#define kNtErrorSubstToJoin 141
+#define kNtErrorBusyDrive 142
+#define kNtErrorSameDrive 143
+#define kNtErrorDirNotRoot 144
+#define kNtErrorDirNotEmpty 145
+#define kNtErrorIsSubstPath 146
+#define kNtErrorIsJoinPath 147
+#define kNtErrorPathBusy 148 /* ETXTBSY */
+#define kNtErrorIsSubstTarget 149
+#define kNtErrorSystemTrace 150
+#define kNtErrorInvalidEventCount 151
+#define kNtErrorTooManyMuxwaiters 152
+#define kNtErrorInvalidListFormat 153
+#define kNtErrorLabelTooLong 154
+#define kNtErrorTooManyTcbs 155
+#define kNtErrorSignalRefused 156
+#define kNtErrorDiscarded 157
+#define kNtErrorNotLocked 158
+#define kNtErrorBadThreadidAddr 159
+#define kNtErrorBadArguments 160
+#define kNtErrorBadPathname 161
+#define kNtErrorSignalPending 162
+#define kNtErrorMaxThrdsReached 164
+#define kNtErrorLockFailed 167
+#define kNtErrorBusy 170 /* EBUSY */
+#define kNtErrorDeviceSupportInProgress 171
+#define kNtErrorCancelViolation 173
+#define kNtErrorAtomicLocksNotSupported 174
+#define kNtErrorInvalidSegmentNumber 180
+#define kNtErrorInvalidOrdinal 182
+#define kNtErrorAlreadyExists 183 /* EEXIST */
+#define kNtErrorInvalidFlagNumber 186
+#define kNtErrorSemNotFound 187
+#define kNtErrorInvalidStartingCodeseg 188
+#define kNtErrorInvalidStackseg 189
+#define kNtErrorInvalidModuletype 190
+#define kNtErrorInvalidExeSignature 191
+#define kNtErrorExeMarkedInvalid 192
+#define kNtErrorBadExeFormat 193 /* ENOEXEC */
+#define kNtErrorIteratedDataExceeds_64k 194
+#define kNtErrorInvalidMinallocsize 195
+#define kNtErrorDynlinkFromInvalidRing 196
+#define kNtErrorIoplNotEnabled 197
+#define kNtErrorInvalidSegdpl 198
+#define kNtErrorAutodatasegExceeds_64k 199
+#define kNtErrorRing2segMustBeMovable 200
+#define kNtErrorRelocChainXeedsSeglim 201
+#define kNtErrorInfloopInRelocChain 202
+#define kNtErrorEnvvarNotFound 203
+#define kNtErrorNoSignalSent 205
+#define kNtErrorFilenameExcedRange 206
+#define kNtErrorRing2StackInUse 207
+#define kNtErrorMetaExpansionTooLong 208
+#define kNtErrorInvalidSignalNumber 209
+#define kNtErrorThread_1Inactive 210
+#define kNtErrorLocked 212
+#define kNtErrorTooManyModules 214
+#define kNtErrorNestingNotAllowed 215
+#define kNtErrorExeMachineTypeMismatch 216
+#define kNtErrorExeCannotModifySignedBinary 217
+#define kNtErrorExeCannotModifyStrongSignedBinary 218
+#define kNtErrorFileCheckedOut 220
+#define kNtErrorCheckoutRequired 221
+#define kNtErrorBadFileType 222
+#define kNtErrorFileTooLarge 223 /* EFBIG */
+#define kNtErrorFormsAuthRequired 224
+#define kNtErrorVirusInfected 225
+#define kNtErrorVirusDeleted 226
+#define kNtErrorPipeLocal 229
+#define kNtErrorBadPipe 230
+#define kNtErrorPipeBusy 231
+#define kNtErrorNoData 232
+#define kNtErrorPipeNotConnected 233
+#define kNtErrorMoreData 234
+#define kNtErrorNoWorkDone 235
+#define kNtErrorVcDisconnected 240
+#define kNtErrorInvalidEaName 254
+#define kNtErrorEaListInconsistent 255
+#define kNtErrorNoMoreItems 259
+#define kNtErrorCannotCopy 266
+#define kNtErrorDirectory 267
+#define kNtErrorEasDidntFit 275
+#define kNtErrorEaFileCorrupt 276
+#define kNtErrorEaTableFull 277
+#define kNtErrorInvalidEaHandle 278
+#define kNtErrorEasNotSupported 282
+#define kNtErrorNotOwner 288
+#define kNtErrorTooManyPosts 298
+#define kNtErrorPartialCopy 299
+#define kNtErrorOplockNotGranted 300
+#define kNtErrorInvalidOplockProtocol 301
+#define kNtErrorDiskTooFragmented 302
+#define kNtErrorDeletePending 303
+#define kNtErrorIncompatibleWithGlobalShortNameRegistrySetting 304
+#define kNtErrorShortNamesNotEnabledOnVolume 305
+#define kNtErrorSecurityStreamIsInconsistent 306
+#define kNtErrorInvalidLockRange 307
+#define kNtErrorImageSubsystemNotPresent 308
+#define kNtErrorNotificationGuidAlreadyDefined 309
+#define kNtErrorInvalidExceptionHandler 310
+#define kNtErrorDuplicatePrivileges 311
+#define kNtErrorNoRangesProcessed 312
+#define kNtErrorNotAllowedOnSystemFile 313
+#define kNtErrorDiskResourcesExhausted 314
+#define kNtErrorInvalidToken 315
+#define kNtErrorDeviceFeatureNotSupported 316
+#define kNtErrorMrMidNotFound 317
+#define kNtErrorScopeNotFound 318
+#define kNtErrorUndefinedScope 319
+#define kNtErrorInvalidCap 320
+#define kNtErrorDeviceUnreachable 321
+#define kNtErrorDeviceNoResources 322
+#define kNtErrorDataChecksumError 323
+#define kNtErrorIntermixedKernelEaOperation 324
+#define kNtErrorFileLevelTrimNotSupported 326
+#define kNtErrorOffsetAlignmentViolation 327
+#define kNtErrorInvalidFieldInParameterList 328
+#define kNtErrorOperationInProgress 329
+#define kNtErrorBadDevicePath 330
+#define kNtErrorTooManyDescriptors 331 /* ENFILE */
+#define kNtErrorScrubDataDisabled 332
+#define kNtErrorNotRedundantStorage 333
+#define kNtErrorResidentFileNotSupported 334
+#define kNtErrorCompressedFileNotSupported 335
+#define kNtErrorDirectoryNotSupported 336 /* EISDIR */
+#define kNtErrorNotReadFromCopy 337
+#define kNtErrorFtWriteFailure 338
+#define kNtErrorFtDiScanRequired 339
+#define kNtErrorInvalidKernelInfoVersion 340
+#define kNtErrorInvalidPepInfoVersion 341
+#define kNtErrorObjectNotExternallyBacked 342
+#define kNtErrorExternalBackingProviderUnknown 343
+#define kNtErrorCompressionNotBeneficial 344
+#define kNtErrorStorageTopologyIdMismatch 345
+#define kNtErrorBlockedByParentalControls 346
+#define kNtErrorBlockTooManyReferences 347
+#define kNtErrorMarkedToDisallowWrites 348
+#define kNtErrorEnclaveFailure 349
+#define kNtErrorFailNoactionReboot 350
+#define kNtErrorFailShutdown 351
+#define kNtErrorFailRestart 352
+#define kNtErrorMaxSessionsReached 353
+#define kNtErrorNetworkAccessDeniedEdp 354
+#define kNtErrorDeviceHintNameBufferTooSmall 355
+#define kNtErrorEdpPolicyDeniesOperation 356
+#define kNtErrorEdpDplPolicyCantBeSatisfied 357
+#define kNtErrorCloudFileSyncRootMetadataCorrupt 358
+#define kNtErrorDeviceInMaintenance 359
+#define kNtErrorNotSupportedOnDax 360
+#define kNtErrorDaxMappingExists 361
+#define kNtErrorCloudFileProviderNotRunning 362
+#define kNtErrorCloudFileMetadataCorrupt 363
+#define kNtErrorCloudFileMetadataTooLarge 364
+#define kNtErrorCloudFilePropertyBlobTooLarge 365
+#define kNtErrorCloudFilePropertyBlobChecksumMismatch 366
+#define kNtErrorChildProcessBlocked 367
+#define kNtErrorStorageLostDataPersistence 368
+#define kNtErrorFileSystemVirtualizationUnavailable 369
+#define kNtErrorFileSystemVirtualizationMetadataCorrupt 370
+#define kNtErrorFileSystemVirtualizationBusy 371
+#define kNtErrorFileSystemVirtualizationProviderUnknown 372
+#define kNtErrorGdiHandleLeak 373
+#define kNtErrorCloudFileTooManyPropertyBlobs 374
+#define kNtErrorCloudFilePropertyVersionNotSupported 375
+#define kNtErrorNotACloudFile 376
+#define kNtErrorCloudFileNotInSync 377
+#define kNtErrorCloudFileAlreadyConnected 378
+#define kNtErrorCloudFileNotSupported 379
+#define kNtErrorCloudFileInvalidRequest 380
+#define kNtErrorCloudFileReadOnlyVolume 381
+#define kNtErrorCloudFileConnectedProviderOnly 382
+#define kNtErrorCloudFileValidationFailed 383
+#define kNtErrorSmb1NotAvailable 384
+#define kNtErrorFileSystemVirtualizationInvalidOperation 385
+#define kNtErrorCloudFileAuthenticationFailed 386
+#define kNtErrorCloudFileInsufficientResources 387
+#define kNtErrorCloudFileNetworkUnavailable 388
+#define kNtErrorCloudFileUnsuccessful 389
+#define kNtErrorCloudFileNotUnderSyncRoot 390
+#define kNtErrorCloudFileInUse 391
+#define kNtErrorCloudFilePinned 392
+#define kNtErrorCloudFileRequestAborted 393
+#define kNtErrorCloudFilePropertyCorrupt 394
+#define kNtErrorCloudFileAccessDenied 395
+#define kNtErrorCloudFileIncompatibleHardlinks 396
+#define kNtErrorCloudFilePropertyLockConflict 397
+#define kNtErrorCloudFileRequestCanceled 398
+#define kNtErrorExternalSyskeyNotSupported 399
+#define kNtErrorThreadModeAlreadyBackground 400
+#define kNtErrorThreadModeNotBackground 401
+#define kNtErrorProcessModeAlreadyBackground 402
+#define kNtErrorProcessModeNotBackground 403
+#define kNtErrorCloudFileProviderTerminated 404
+#define kNtErrorNotACloudSyncRoot 405
+#define kNtErrorFileProtectedUnderDpl 406
+#define kNtErrorVolumeNotClusterAligned 407
+#define kNtErrorNoPhysicallyAlignedFreeSpaceFound 408
+#define kNtErrorAppxFileNotEncrypted 409
+#define kNtErrorRwrawEncryptedFileNotEncrypted 410
+#define kNtErrorRwrawEncryptedInvalidEdatainfoFileoffset 411
+#define kNtErrorRwrawEncryptedInvalidEdatainfoFilerange 412
+#define kNtErrorRwrawEncryptedInvalidEdatainfoParameter 413
+#define kNtErrorLinuxSubsystemNotPresent 414
+#define kNtErrorCapauthzNotDevunlocked 450
+#define kNtErrorCapauthzChangeType 451
+#define kNtErrorCapauthzNotProvisioned 452
+#define kNtErrorCapauthzNotAuthorized 453
+#define kNtErrorCapauthzNoPolicy 454
+#define kNtErrorCapauthzDbCorrupted 455
+#define kNtErrorCapauthzSccdInvalidCatalog 456
+#define kNtErrorCapauthzSccdNoAuthEntity 457
+#define kNtErrorCapauthzSccdParseError 458
+#define kNtErrorCapauthzSccdDevModeRequired 459
+#define kNtErrorCapauthzSccdNoCapabilityMatch 460
+#define kNtErrorPnpQueryRemoveDeviceTimeout 480
+#define kNtErrorPnpQueryRemoveRelatedDeviceTimeout 481
+#define kNtErrorPnpQueryRemoveUnrelatedDeviceTimeout 482
+#define kNtErrorDeviceHardwareError 483
+#define kNtErrorInvalidAddress 487 /* EFAULT */
+#define kNtErrorVrfCfgEnabled 1183
+#define kNtErrorPartitionTerminating 1184
+#define kNtErrorUserProfileLoad 500
+#define kNtErrorArithmeticOverflow 534
+#define kNtErrorPipeConnected 535
+#define kNtErrorPipeListening 536
+#define kNtErrorVerifierStop 537
+#define kNtErrorAbiosError 538
+#define kNtErrorWx86Warning 539
+#define kNtErrorWx86Error 540
+#define kNtErrorTimerNotCanceled 541
+#define kNtErrorUnwind 542
+#define kNtErrorBadStack 543
+#define kNtErrorInvalidUnwindTarget 544
+#define kNtErrorInvalidPortAttributes 545
+#define kNtErrorPortMessageTooLong 546
+#define kNtErrorInvalidQuotaLower 547
+#define kNtErrorDeviceAlreadyAttached 548
+#define kNtErrorInstructionMisalignment 549
+#define kNtErrorProfilingNotStarted 550
+#define kNtErrorProfilingNotStopped 551
+#define kNtErrorCouldNotInterpret 552
+#define kNtErrorProfilingAtLimit 553
+#define kNtErrorCantWait 554
+#define kNtErrorCantTerminateSelf 555
+#define kNtErrorUnexpectedMmCreateErr 556
+#define kNtErrorUnexpectedMmMapError 557
+#define kNtErrorUnexpectedMmExtendErr 558
+#define kNtErrorBadFunctionTable 559
+#define kNtErrorNoGuidTranslation 560
+#define kNtErrorInvalidLdtSize 561
+#define kNtErrorInvalidLdtOffset 563
+#define kNtErrorInvalidLdtDescriptor 564
+#define kNtErrorTooManyThreads 565
+#define kNtErrorThreadNotInProcess 566 /* ESRCH */
+#define kNtErrorPagefileQuotaExceeded 567
+#define kNtErrorLogonServerConflict 568
+#define kNtErrorSynchronizationRequired 569
+#define kNtErrorNetOpenFailed 570
+#define kNtErrorIoPrivilegeFailed 571
+#define kNtErrorControlCExit 572
+#define kNtErrorMissingSystemfile 573
+#define kNtErrorUnhandledException 574
+#define kNtErrorAppInitFailure 575
+#define kNtErrorPagefileCreateFailed 576
+#define kNtErrorInvalidImageHash 577
+#define kNtErrorNoPagefile 578
+#define kNtErrorIllegalFloatContext 579
+#define kNtErrorNoEventPair 580
+#define kNtErrorDomainCtrlrConfigError 581
+#define kNtErrorIllegalCharacter 582
+#define kNtErrorUndefinedCharacter 583
+#define kNtErrorFloppyVolume 584
+#define kNtErrorBiosFailedToConnectInterrupt 585
+#define kNtErrorBackupController 586
+#define kNtErrorMutantLimitExceeded 587
+#define kNtErrorFsDriverRequired 588
+#define kNtErrorCannotLoadRegistryFile 589
+#define kNtErrorDebugAttachFailed 590
+#define kNtErrorSystemProcessTerminated 591
+#define kNtErrorDataNotAccepted 592
+#define kNtErrorVdmHardError 593
+#define kNtErrorDriverCancelTimeout 594
+#define kNtErrorReplyMessageMismatch 595
+#define kNtErrorLostWritebehindData 596
+#define kNtErrorClientServerParametersInvalid 597
+#define kNtErrorNotTinyStream 598
+#define kNtErrorStackOverflowRead 599
+#define kNtErrorConvertToLarge 600
+#define kNtErrorFoundOutOfScope 601
+#define kNtErrorAllocateBucket 602
+#define kNtErrorMarshallOverflow 603
+#define kNtErrorInvalidVariant 604
+#define kNtErrorBadCompressionBuffer 605
+#define kNtErrorAuditFailed 606
+#define kNtErrorTimerResolutionNotSet 607
+#define kNtErrorInsufficientLogonInfo 608
+#define kNtErrorBadDllEntrypoint 609
+#define kNtErrorBadServiceEntrypoint 610
+#define kNtErrorIpAddressConflict1 611
+#define kNtErrorIpAddressConflict2 612
+#define kNtErrorRegistryQuotaLimit 613
+#define kNtErrorNoCallbackActive 614
+#define kNtErrorPwdTooShort 615
+#define kNtErrorPwdTooRecent 616
+#define kNtErrorPwdHistoryConflict 617
+#define kNtErrorUnsupportedCompression 618
+#define kNtErrorInvalidHwProfile 619
+#define kNtErrorInvalidPlugplayDevicePath 620
+#define kNtErrorQuotaListInconsistent 621
+#define kNtErrorEvaluationExpiration 622
+#define kNtErrorIllegalDllRelocation 623
+#define kNtErrorDllInitFailedLogoff 624
+#define kNtErrorValidateContinue 625
+#define kNtErrorNoMoreMatches 626
+#define kNtErrorRangeListConflict 627
+#define kNtErrorServerSidMismatch 628
+#define kNtErrorCantEnableDenyOnly 629
+#define kNtErrorFloatMultipleFaults 630
+#define kNtErrorFloatMultipleTraps 631
+#define kNtErrorNointerface 632
+#define kNtErrorDriverFailedSleep 633
+#define kNtErrorCorruptSystemFile 634
+#define kNtErrorCommitmentMinimum 635
+#define kNtErrorPnpRestartEnumeration 636
+#define kNtErrorSystemImageBadSignature 637
+#define kNtErrorPnpRebootRequired 638
+#define kNtErrorInsufficientPower 639
+#define kNtErrorMultipleFaultViolation 640
+#define kNtErrorSystemShutdown 641
+#define kNtErrorPortNotSet 642
+#define kNtErrorDsVersionCheckFailure 643
+#define kNtErrorRangeNotFound 644
+#define kNtErrorNotSafeModeDriver 646
+#define kNtErrorFailedDriverEntry 647
+#define kNtErrorDeviceEnumerationError 648
+#define kNtErrorMountPointNotResolved 649
+#define kNtErrorInvalidDeviceObjectParameter 650
+#define kNtErrorMcaOccured 651
+#define kNtErrorDriverDatabaseError 652
+#define kNtErrorSystemHiveTooLarge 653
+#define kNtErrorDriverFailedPriorUnload 654
+#define kNtErrorVolsnapPrepareHibernate 655
+#define kNtErrorHibernationFailure 656
+#define kNtErrorPwdTooLong 657
+#define kNtErrorFileSystemLimitation 665
+#define kNtErrorAssertionFailure 668
+#define kNtErrorAcpiError 669
+#define kNtErrorWowAssertion 670
+#define kNtErrorPnpBadMpsTable 671
+#define kNtErrorPnpTranslationFailed 672
+#define kNtErrorPnpIrqTranslationFailed 673
+#define kNtErrorPnpInvalidId 674
+#define kNtErrorWakeSystemDebugger 675
+#define kNtErrorHandlesClosed 676
+#define kNtErrorExtraneousInformation 677
+#define kNtErrorRxactCommitNecessary 678
+#define kNtErrorMediaCheck 679
+#define kNtErrorGuidSubstitutionMade 680
+#define kNtErrorStoppedOnSymlink 681
+#define kNtErrorLongjump 682
+#define kNtErrorPlugplayQueryVetoed 683
+#define kNtErrorUnwindConsolidate 684
+#define kNtErrorRegistryHiveRecovered 685
+#define kNtErrorDllMightBeInsecure 686
+#define kNtErrorDllMightBeIncompatible 687
+#define kNtErrorDbgExceptionNotHandled 688
+#define kNtErrorDbgReplyLater 689
+#define kNtErrorDbgUnableToProvideHandle 690
+#define kNtErrorDbgTerminateThread 691
+#define kNtErrorDbgTerminateProcess 692
+#define kNtErrorDbgControlC 693
+#define kNtErrorDbgPrintexceptionC 694
+#define kNtErrorDbgRipexception 695
+#define kNtErrorDbgControlBreak 696
+#define kNtErrorDbgCommandException 697
+#define kNtErrorObjectNameExists 698
+#define kNtErrorThreadWasSuspended 699
+#define kNtErrorImageNotAtBase 700
+#define kNtErrorRxactStateCreated 701
+#define kNtErrorSegmentNotification 702
+#define kNtErrorBadCurrentDirectory 703
+#define kNtErrorFtReadRecoveryFromBackup 704
+#define kNtErrorFtWriteRecovery 705
+#define kNtErrorImageMachineTypeMismatch 706
+#define kNtErrorReceivePartial 707
+#define kNtErrorReceiveExpedited 708
+#define kNtErrorReceivePartialExpedited 709
+#define kNtErrorEventDone 710
+#define kNtErrorEventPending 711
+#define kNtErrorCheckingFileSystem 712
+#define kNtErrorFatalAppExit 713
+#define kNtErrorPredefinedHandle 714
+#define kNtErrorWasUnlocked 715
+#define kNtErrorServiceNotification 716
+#define kNtErrorWasLocked 717
+#define kNtErrorLogHardError 718
+#define kNtErrorAlreadyWin32 719
+#define kNtErrorImageMachineTypeMismatchExe 720
+#define kNtErrorNoYieldPerformed 721
+#define kNtErrorTimerResumeIgnored 722
+#define kNtErrorArbitrationUnhandled 723
+#define kNtErrorCardbusNotSupported 724
+#define kNtErrorMpProcessorMismatch 725
+#define kNtErrorHibernated 726
+#define kNtErrorResumeHibernation 727
+#define kNtErrorFirmwareUpdated 728
+#define kNtErrorDriversLeakingLockedPages 729
+#define kNtErrorWakeSystem 730
+#define kNtErrorWait_1 731
+#define kNtErrorWait_2 732
+#define kNtErrorWait_3 733
+#define kNtErrorWait_63 734
+#define kNtErrorAbandonedWait_0 735
+#define kNtErrorAbandonedWait_63 736
+#define kNtErrorUserApc 737
+#define kNtErrorKernelApc 738
+#define kNtErrorAlerted 739
+#define kNtErrorElevationRequired 740
+#define kNtErrorReparse 741
+#define kNtErrorOplockBreakInProgress 742
+#define kNtErrorVolumeMounted 743
+#define kNtErrorRxactCommitted 744
+#define kNtErrorNotifyCleanup 745
+#define kNtErrorPrimaryTransportConnectFailed 746
+#define kNtErrorPageFaultTransition 747
+#define kNtErrorPageFaultDemandZero 748
+#define kNtErrorPageFaultCopyOnWrite 749
+#define kNtErrorPageFaultGuardPage 750
+#define kNtErrorPageFaultPagingFile 751
+#define kNtErrorCachePageLocked 752
+#define kNtErrorCrashDump 753
+#define kNtErrorBufferAllZeros 754
+#define kNtErrorReparseObject 755
+#define kNtErrorResourceRequirementsChanged 756
+#define kNtErrorTranslationComplete 757
+#define kNtErrorNothingToTerminate 758
+#define kNtErrorProcessNotInJob 759
+#define kNtErrorProcessInJob 760
+#define kNtErrorVolsnapHibernateReady 761
+#define kNtErrorFsfilterOpCompletedSuccessfully 762
+#define kNtErrorInterruptVectorAlreadyConnected 763
+#define kNtErrorInterruptStillConnected 764
+#define kNtErrorWaitForOplock 765
+#define kNtErrorDbgExceptionHandled 766
+#define kNtErrorDbgContinue 767
+#define kNtErrorCallbackPopStack 768
+#define kNtErrorCompressionDisabled 769
+#define kNtErrorCantfetchbackwards 770
+#define kNtErrorCantscrollbackwards 771
+#define kNtErrorRowsnotreleased 772
+#define kNtErrorBadAccessorFlags 773
+#define kNtErrorErrorsEncountered 774
+#define kNtErrorNotCapable 775
+#define kNtErrorRequestOutOfSequence 776
+#define kNtErrorVersionParseError 777
+#define kNtErrorBadstartposition 778
+#define kNtErrorMemoryHardware 779
+#define kNtErrorDiskRepairDisabled 780
+#define kNtErrorInsufficientResourceForSpecifiedSharedSectionSize 781
+#define kNtErrorSystemPowerstateTransition 782
+#define kNtErrorSystemPowerstateComplexTransition 783
+#define kNtErrorMcaException 784
+#define kNtErrorAccessAuditByPolicy 785
+#define kNtErrorAccessDisabledNoSaferUiByPolicy 786
+#define kNtErrorAbandonHiberfile 787
+#define kNtErrorLostWritebehindDataNetworkDisconnected 788
+#define kNtErrorLostWritebehindDataNetworkServerError 789
+#define kNtErrorLostWritebehindDataLocalDiskError 790
+#define kNtErrorBadMcfgTable 791
+#define kNtErrorDiskRepairRedirected 792
+#define kNtErrorDiskRepairUnsuccessful 793
+#define kNtErrorCorruptLogOverfull 794
+#define kNtErrorCorruptLogCorrupted 795
+#define kNtErrorCorruptLogUnavailable 796
+#define kNtErrorCorruptLogDeletedFull 797
+#define kNtErrorCorruptLogCleared 798
+#define kNtErrorOrphanNameExhausted 799
+#define kNtErrorOplockSwitchedToNewHandle 800
+#define kNtErrorCannotGrantRequestedOplock 801
+#define kNtErrorCannotBreakOplock 802
+#define kNtErrorOplockHandleClosed 803
+#define kNtErrorNoAceCondition 804
+#define kNtErrorInvalidAceCondition 805
+#define kNtErrorFileHandleRevoked 806
+#define kNtErrorImageAtDifferentBase 807
+#define kNtErrorEncryptedIoNotPossible 808
+#define kNtErrorFileMetadataOptimizationInProgress 809
+#define kNtErrorQuotaActivity 810
+#define kNtErrorHandleRevoked 811
+#define kNtErrorCallbackInvokeInline 812
+#define kNtErrorCpuSetInvalid 813
+#define kNtErrorEnclaveNotTerminated 814
+#define kNtErrorEnclaveViolation 815
+#define kNtErrorEaAccessDenied 994
+#define kNtErrorOperationAborted 995
+#define kNtErrorIoIncomplete 996
+#define kNtErrorIoPending 997
+#define kNtErrorNoaccess 998
+#define kNtErrorSwaperror 999
+#define kNtErrorStackOverflow 1001
+#define kNtErrorInvalidMessage 1002
+#define kNtErrorCanNotComplete 1003
+#define kNtErrorInvalidFlags 1004
+#define kNtErrorUnrecognizedVolume 1005
+#define kNtErrorFileInvalid 1006
+#define kNtErrorFullscreenMode 1007
+#define kNtErrorNoToken 1008
+#define kNtErrorBaddb 1009
+#define kNtErrorBadkey 1010
+#define kNtErrorCantopen 1011
+#define kNtErrorCantread 1012
+#define kNtErrorCantwrite 1013
+#define kNtErrorRegistryRecovered 1014
+#define kNtErrorRegistryCorrupt 1015
+#define kNtErrorRegistryIoFailed 1016
+#define kNtErrorNotRegistryFile 1017
+#define kNtErrorKeyDeleted 1018
+#define kNtErrorNoLogSpace 1019
+#define kNtErrorKeyHasChildren 1020
+#define kNtErrorChildMustBeVolatile 1021
+#define kNtErrorNotifyEnumDir 1022
+#define kNtErrorDependentServicesRunning 1051
+#define kNtErrorInvalidServiceControl 1052
+#define kNtErrorServiceRequestTimeout 1053
+#define kNtErrorServiceNoThread 1054
+#define kNtErrorServiceDatabaseLocked 1055
+#define kNtErrorServiceAlreadyRunning 1056
+#define kNtErrorInvalidServiceAccount 1057
+#define kNtErrorServiceDisabled 1058
+#define kNtErrorCircularDependency 1059
+#define kNtErrorServiceDoesNotExist 1060
+#define kNtErrorServiceCannotAcceptCtrl 1061
+#define kNtErrorServiceNotActive 1062
+#define kNtErrorFailedServiceControllerConnect 1063
+#define kNtErrorExceptionInService 1064
+#define kNtErrorDatabaseDoesNotExist 1065
+#define kNtErrorServiceSpecificError 1066
+#define kNtErrorProcessAborted 1067
+#define kNtErrorServiceDependencyFail 1068
+#define kNtErrorServiceLogonFailed 1069
+#define kNtErrorServiceStartHang 1070
+#define kNtErrorInvalidServiceLock 1071
+#define kNtErrorServiceMarkedForDelete 1072
+#define kNtErrorServiceExists 1073
+#define kNtErrorAlreadyRunningLkg 1074
+#define kNtErrorServiceDependencyDeleted 1075
+#define kNtErrorBootAlreadyAccepted 1076
+#define kNtErrorServiceNeverStarted 1077
+#define kNtErrorDuplicateServiceName 1078
+#define kNtErrorDifferentServiceAccount 1079
+#define kNtErrorCannotDetectDriverFailure 1080
+#define kNtErrorCannotDetectProcessAbort 1081
+#define kNtErrorNoRecoveryProgram 1082
+#define kNtErrorServiceNotInExe 1083
+#define kNtErrorNotSafebootService 1084
+#define kNtErrorEndOfMedia 1100
+#define kNtErrorFilemarkDetected 1101
+#define kNtErrorBeginningOfMedia 1102
+#define kNtErrorSetmarkDetected 1103
+#define kNtErrorNoDataDetected 1104
+#define kNtErrorPartitionFailure 1105
+#define kNtErrorInvalidBlockLength 1106
+#define kNtErrorDeviceNotPartitioned 1107
+#define kNtErrorUnableToLockMedia 1108
+#define kNtErrorUnableToUnloadMedia 1109
+#define kNtErrorMediaChanged 1110
+#define kNtErrorBusReset 1111
+#define kNtErrorNoMediaInDrive 1112 /* ENXIO */
+#define kNtErrorNoUnicodeTranslation 1113
+#define kNtErrorDllInitFailed 1114
+#define kNtErrorShutdownInProgress 1115
+#define kNtErrorNoShutdownInProgress 1116
+#define kNtErrorIoDevice 1117       /* EIO */
+#define kNtErrorSerialNoDevice 1118 /* ENOTTY */
+#define kNtErrorIrqBusy 1119
+#define kNtErrorMoreWrites 1120
+#define kNtErrorCounterTimeout 1121
+#define kNtErrorFloppyIdMarkNotFound 1122
+#define kNtErrorFloppyWrongCylinder 1123
+#define kNtErrorFloppyUnknownError 1124
+#define kNtErrorFloppyBadRegisters 1125
+#define kNtErrorDiskRecalibrateFailed 1126
+#define kNtErrorDiskOperationFailed 1127
+#define kNtErrorDiskResetFailed 1128
+#define kNtErrorEomOverflow 1129
+#define kNtErrorNotEnoughServerMemory 1130
+#define kNtErrorPossibleDeadlock 1131 /* EDEADLK */
+#define kNtErrorMappedAlignment 1132
+#define kNtErrorSetPowerStateVetoed 1140
+#define kNtErrorSetPowerStateFailed 1141
+#define kNtErrorTooManyLinks 1142
+#define kNtErrorOldWinVersion 1150
+#define kNtErrorAppWrongOs 1151
+#define kNtErrorSingleInstanceApp 1152
+#define kNtErrorRmodeApp 1153
+#define kNtErrorInvalidDll 1154
+#define kNtErrorNoAssociation 1155
+#define kNtErrorDdeFail 1156
+#define kNtErrorDllNotFound 1157
+#define kNtErrorNoMoreUserHandles 1158
+#define kNtErrorMessageSyncOnly 1159
+#define kNtErrorSourceElementEmpty 1160
+#define kNtErrorDestinationElementFull 1161
+#define kNtErrorIllegalElementAddress 1162
+#define kNtErrorMagazineNotPresent 1163
+#define kNtErrorDeviceReinitializationNeeded 1164
+#define kNtErrorDeviceRequiresCleaning 1165
+#define kNtErrorDeviceDoorOpen 1166
+#define kNtErrorDeviceNotConnected 1167
+#define kNtErrorNotFound 1168
+#define kNtErrorNoMatch 1169
+#define kNtErrorSetNotFound 1170
+#define kNtErrorPointNotFound 1171
+#define kNtErrorNoTrackingService 1172
+#define kNtErrorNoVolumeId 1173
+#define kNtErrorUnableToRemoveReplaced 1175
+#define kNtErrorUnableToMoveReplacement 1176
+#define kNtErrorUnableToMoveReplacement_2 1177
+#define kNtErrorJournalDeleteInProgress 1178
+#define kNtErrorJournalNotActive 1179
+#define kNtErrorPotentialFileFound 1180
+#define kNtErrorJournalEntryDeleted 1181
+#define kNtErrorShutdownIsScheduled 1190
+#define kNtErrorShutdownUsersLoggedOn 1191
+#define kNtErrorBadDevice 1200 /* ENODEV */
+#define kNtErrorConnectionUnavail 1201
+#define kNtErrorDeviceAlreadyRemembered 1202
+#define kNtErrorNoNetOrBadPath 1203
+#define kNtErrorBadProvider 1204
+#define kNtErrorCannotOpenProfile 1205
+#define kNtErrorBadProfile 1206
+#define kNtErrorNotContainer 1207
+#define kNtErrorExtendedError 1208
+#define kNtErrorInvalidGroupname 1209
+#define kNtErrorInvalidComputername 1210
+#define kNtErrorInvalidEventname 1211
+#define kNtErrorInvalidDomainname 1212
+#define kNtErrorInvalidServicename 1213
+#define kNtErrorInvalidNetname 1214
+#define kNtErrorInvalidSharename 1215
+#define kNtErrorInvalidPasswordname 1216
+#define kNtErrorInvalidMessagename 1217
+#define kNtErrorInvalidMessagedest 1218
+#define kNtErrorSessionCredentialConflict 1219
+#define kNtErrorRemoteSessionLimitExceeded 1220
+#define kNtErrorDupDomainname 1221
+#define kNtErrorNoNetwork 1222
+#define kNtErrorCancelled 1223
+#define kNtErrorUserMappedFile 1224
+#define kNtErrorConnectionRefused 1225
+#define kNtErrorGracefulDisconnect 1226
+#define kNtErrorAddressAlreadyAssociated 1227
+#define kNtErrorAddressNotAssociated 1228
+#define kNtErrorConnectionInvalid 1229
+#define kNtErrorConnectionActive 1230
+#define kNtErrorNetworkUnreachable 1231
+#define kNtErrorHostUnreachable 1232
+#define kNtErrorProtocolUnreachable 1233
+#define kNtErrorPortUnreachable 1234
+#define kNtErrorRequestAborted 1235
+#define kNtErrorConnectionAborted 1236
+#define kNtErrorRetry 1237
+#define kNtErrorConnectionCountLimit 1238
+#define kNtErrorLoginTimeRestriction 1239
+#define kNtErrorLoginWkstaRestriction 1240
+#define kNtErrorIncorrectAddress 1241
+#define kNtErrorAlreadyRegistered 1242
+#define kNtErrorServiceNotFound 1243
+#define kNtErrorNotAuthenticated 1244
+#define kNtErrorNotLoggedOn 1245
+#define kNtErrorContinue 1246
+#define kNtErrorAlreadyInitialized 1247
+#define kNtErrorNoMoreDevices 1248
+#define kNtErrorNoSuchSite 1249
+#define kNtErrorDomainControllerExists 1250
+#define kNtErrorOnlyIfConnected 1251
+#define kNtErrorOverrideNochanges 1252
+#define kNtErrorBadUserProfile 1253
+#define kNtErrorNotSupportedOnSbs 1254
+#define kNtErrorServerShutdownInProgress 1255
+#define kNtErrorHostDown 1256
+#define kNtErrorNonAccountSid 1257
+#define kNtErrorNonDomainSid 1258
+#define kNtErrorApphelpBlock 1259
+#define kNtErrorAccessDisabledByPolicy 1260
+#define kNtErrorRegNatConsumption 1261
+#define kNtErrorCscshareOffline 1262
+#define kNtErrorPkinitFailure 1263
+#define kNtErrorSmartcardSubsystemFailure 1264
+#define kNtErrorDowngradeDetected 1265
+#define kNtErrorMachineLocked 1271
+#define kNtErrorSmbGuestLogonBlocked 1272
+#define kNtErrorCallbackSuppliedInvalidData 1273
+#define kNtErrorSyncForegroundRefreshRequired 1274
+#define kNtErrorDriverBlocked 1275
+#define kNtErrorInvalidImportOfNonDll 1276
+#define kNtErrorAccessDisabledWebblade 1277
+#define kNtErrorAccessDisabledWebbladeTamper 1278
+#define kNtErrorRecoveryFailure 1279
+#define kNtErrorAlreadyFiber 1280
+#define kNtErrorAlreadyThread 1281
+#define kNtErrorStackBufferOverrun 1282
+#define kNtErrorParameterQuotaExceeded 1283
+#define kNtErrorDebuggerInactive 1284
+#define kNtErrorDelayLoadFailed 1285
+#define kNtErrorVdmDisallowed 1286
+#define kNtErrorUnidentifiedError 1287
+#define kNtErrorInvalidCruntimeParameter 1288
+#define kNtErrorBeyondVdl 1289
+#define kNtErrorIncompatibleServiceSidType 1290
+#define kNtErrorDriverProcessTerminated 1291
+#define kNtErrorImplementationLimit 1292
+#define kNtErrorProcessIsProtected 1293
+#define kNtErrorServiceNotifyClientLagging 1294
+#define kNtErrorDiskQuotaExceeded 1295
+#define kNtErrorContentBlocked 1296
+#define kNtErrorIncompatibleServicePrivilege 1297
+#define kNtErrorAppHang 1298
+#define kNtErrorInvalidLabel 1299
+#define kNtErrorNotAllAssigned 1300
+#define kNtErrorSomeNotMapped 1301
+#define kNtErrorNoQuotasForAccount 1302
+#define kNtErrorLocalUserSessionKey 1303
+#define kNtErrorNullLmPassword 1304
+#define kNtErrorUnknownRevision 1305
+#define kNtErrorRevisionMismatch 1306
+#define kNtErrorInvalidOwner 1307
+#define kNtErrorInvalidPrimaryGroup 1308
+#define kNtErrorNoImpersonationToken 1309
+#define kNtErrorCantDisableMandatory 1310
+#define kNtErrorNoLogonServers 1311
+#define kNtErrorNoSuchLogonSession 1312
+#define kNtErrorNoSuchPrivilege 1313
+#define kNtErrorPrivilegeNotHeld 1314
+#define kNtErrorInvalidAccountName 1315
+#define kNtErrorUserExists 1316
+#define kNtErrorNoSuchUser 1317
+#define kNtErrorGroupExists 1318
+#define kNtErrorNoSuchGroup 1319
+#define kNtErrorMemberInGroup 1320
+#define kNtErrorMemberNotInGroup 1321
+#define kNtErrorLastAdmin 1322
+#define kNtErrorWrongPassword 1323
+#define kNtErrorIllFormedPassword 1324
+#define kNtErrorPasswordRestriction 1325
+#define kNtErrorLogonFailure 1326
+#define kNtErrorAccountRestriction 1327
+#define kNtErrorInvalidLogonHours 1328
+#define kNtErrorInvalidWorkstation 1329
+#define kNtErrorPasswordExpired 1330
+#define kNtErrorAccountDisabled 1331
+#define kNtErrorNoneMapped 1332
+#define kNtErrorTooManyLuidsRequested 1333
+#define kNtErrorLuidsExhausted 1334
+#define kNtErrorInvalidSubAuthority 1335
+#define kNtErrorInvalidAcl 1336
+#define kNtErrorInvalidSid 1337
+#define kNtErrorInvalidSecurityDescr 1338
+#define kNtErrorBadInheritanceAcl 1340
+#define kNtErrorServerDisabled 1341
+#define kNtErrorServerNotDisabled 1342
+#define kNtErrorInvalidIdAuthority 1343
+#define kNtErrorAllottedSpaceExceeded 1344
+#define kNtErrorInvalidGroupAttributes 1345
+#define kNtErrorBadImpersonationLevel 1346
+#define kNtErrorCantOpenAnonymous 1347
+#define kNtErrorBadValidationClass 1348
+#define kNtErrorBadTokenType 1349
+#define kNtErrorNoSecurityOnObject 1350
+#define kNtErrorCantAccessDomainInfo 1351
+#define kNtErrorInvalidServerState 1352
+#define kNtErrorInvalidDomainState 1353
+#define kNtErrorInvalidDomainRole 1354
+#define kNtErrorNoSuchDomain 1355
+#define kNtErrorDomainExists 1356
+#define kNtErrorDomainLimitExceeded 1357
+#define kNtErrorInternalDbCorruption 1358
+#define kNtErrorInternalError 1359
+#define kNtErrorGenericNotMapped 1360
+#define kNtErrorBadDescriptorFormat 1361
+#define kNtErrorNotLogonProcess 1362
+#define kNtErrorLogonSessionExists 1363
+#define kNtErrorNoSuchPackage 1364
+#define kNtErrorBadLogonSessionState 1365
+#define kNtErrorLogonSessionCollision 1366
+#define kNtErrorInvalidLogonType 1367
+#define kNtErrorCannotImpersonate 1368
+#define kNtErrorRxactInvalidState 1369
+#define kNtErrorRxactCommitFailure 1370
+#define kNtErrorSpecialAccount 1371
+#define kNtErrorSpecialGroup 1372
+#define kNtErrorSpecialUser 1373
+#define kNtErrorMembersPrimaryGroup 1374
+#define kNtErrorTokenAlreadyInUse 1375
+#define kNtErrorNoSuchAlias 1376
+#define kNtErrorMemberNotInAlias 1377
+#define kNtErrorMemberInAlias 1378
+#define kNtErrorAliasExists 1379
+#define kNtErrorLogonNotGranted 1380
+#define kNtErrorTooManySecrets 1381
+#define kNtErrorSecretTooLong 1382
+#define kNtErrorInternalDbError 1383
+#define kNtErrorTooManyContextIds 1384
+#define kNtErrorLogonTypeNotGranted 1385
+#define kNtErrorNtCrossEncryptionRequired 1386
+#define kNtErrorNoSuchMember 1387
+#define kNtErrorInvalidMember 1388
+#define kNtErrorTooManySids 1389
+#define kNtErrorLmCrossEncryptionRequired 1390
+#define kNtErrorNoInheritance 1391
+#define kNtErrorFileCorrupt 1392
+#define kNtErrorDiskCorrupt 1393
+#define kNtErrorNoUserSessionKey 1394
+#define kNtErrorLicenseQuotaExceeded 1395
+#define kNtErrorWrongTargetName 1396
+#define kNtErrorMutualAuthFailed 1397
+#define kNtErrorTimeSkew 1398
+#define kNtErrorCurrentDomainNotAllowed 1399
+#define kNtErrorInvalidWindowHandle 1400
+#define kNtErrorInvalidMenuHandle 1401
+#define kNtErrorInvalidCursorHandle 1402
+#define kNtErrorInvalidAccelHandle 1403
+#define kNtErrorInvalidHookHandle 1404
+#define kNtErrorInvalidDwpHandle 1405
+#define kNtErrorTlwWithWschild 1406
+#define kNtErrorCannotFindWndClass 1407
+#define kNtErrorWindowOfOtherThread 1408
+#define kNtErrorHotkeyAlreadyRegistered 1409
+#define kNtErrorClassAlreadyExists 1410
+#define kNtErrorClassDoesNotExist 1411
+#define kNtErrorClassHasWindows 1412
+#define kNtErrorInvalidIndex 1413
+#define kNtErrorInvalidIconHandle 1414
+#define kNtErrorPrivateDialogIndex 1415
+#define kNtErrorListboxIdNotFound 1416
+#define kNtErrorNoWildcardCharacters 1417
+#define kNtErrorClipboardNotOpen 1418
+#define kNtErrorHotkeyNotRegistered 1419
+#define kNtErrorWindowNotDialog 1420
+#define kNtErrorControlIdNotFound 1421
+#define kNtErrorInvalidComboboxMessage 1422
+#define kNtErrorWindowNotCombobox 1423
+#define kNtErrorInvalidEditHeight 1424
+#define kNtErrorDcNotFound 1425
+#define kNtErrorInvalidHookFilter 1426
+#define kNtErrorInvalidFilterProc 1427
+#define kNtErrorHookNeedsHmod 1428
+#define kNtErrorGlobalOnlyHook 1429
+#define kNtErrorJournalHookSet 1430
+#define kNtErrorHookNotInstalled 1431
+#define kNtErrorInvalidLbMessage 1432
+#define kNtErrorSetcountOnBadLb 1433
+#define kNtErrorLbWithoutTabstops 1434
+#define kNtErrorDestroyObjectOfOtherThread 1435
+#define kNtErrorChildWindowMenu 1436
+#define kNtErrorNoSystemMenu 1437
+#define kNtErrorInvalidMsgboxStyle 1438
+#define kNtErrorInvalidSpiValue 1439
+#define kNtErrorScreenAlreadyLocked 1440
+#define kNtErrorHwndsHaveDiffParent 1441
+#define kNtErrorNotChildWindow 1442
+#define kNtErrorInvalidGwCommand 1443
+#define kNtErrorInvalidThreadId 1444
+#define kNtErrorNonMdichildWindow 1445
+#define kNtErrorPopupAlreadyActive 1446
+#define kNtErrorNoScrollbars 1447
+#define kNtErrorInvalidScrollbarRange 1448
+#define kNtErrorInvalidShowwinCommand 1449
+#define kNtErrorNoSystemResources 1450
+#define kNtErrorNonpagedSystemResources 1451
+#define kNtErrorPagedSystemResources 1452
+#define kNtErrorWorkingSetQuota 1453
+#define kNtErrorPagefileQuota 1454
+#define kNtErrorCommitmentLimit 1455
+#define kNtErrorMenuItemNotFound 1456
+#define kNtErrorInvalidKeyboardHandle 1457
+#define kNtErrorHookTypeNotAllowed 1458
+#define kNtErrorRequiresInteractiveWindowstation 1459
+#define kNtErrorTimeout 1460
+#define kNtErrorInvalidMonitorHandle 1461
+#define kNtErrorIncorrectSize 1462
+#define kNtErrorSymlinkClassDisabled 1463
+#define kNtErrorSymlinkNotSupported 1464
+#define kNtErrorXmlParseError 1465
+#define kNtErrorXmldsigError 1466
+#define kNtErrorRestartApplication 1467
+#define kNtErrorWrongCompartment 1468
+#define kNtErrorAuthipFailure 1469
+#define kNtErrorNoNvramResources 1470
+#define kNtErrorNotGuiProcess 1471
+#define kNtErrorEventlogFileCorrupt 1500
+#define kNtErrorEventlogCantStart 1501
+#define kNtErrorLogFileFull 1502
+#define kNtErrorEventlogFileChanged 1503
+#define kNtErrorContainerAssigned 1504
+#define kNtErrorJobNoContainer 1505
+#define kNtErrorInvalidTaskName 1550
+#define kNtErrorInvalidTaskIndex 1551
+#define kNtErrorThreadAlreadyInTask 1552
+#define kNtErrorInstallServiceFailure 1601
+#define kNtErrorInstallUserexit 1602
+#define kNtErrorInstallFailure 1603
+#define kNtErrorInstallSuspend 1604
+#define kNtErrorUnknownProduct 1605
+#define kNtErrorUnknownFeature 1606
+#define kNtErrorUnknownComponent 1607
+#define kNtErrorUnknownProperty 1608
+#define kNtErrorInvalidHandleState 1609
+#define kNtErrorBadConfiguration 1610
+#define kNtErrorIndexAbsent 1611
+#define kNtErrorInstallSourceAbsent 1612
+#define kNtErrorInstallPackageVersion 1613
+#define kNtErrorProductUninstalled 1614
+#define kNtErrorBadQuerySyntax 1615
+#define kNtErrorInvalidField 1616
+#define kNtErrorDeviceRemoved 1617
+#define kNtErrorInstallAlreadyRunning 1618
+#define kNtErrorInstallPackageOpenFailed 1619
+#define kNtErrorInstallPackageInvalid 1620
+#define kNtErrorInstallUiFailure 1621
+#define kNtErrorInstallLogFailure 1622
+#define kNtErrorInstallLanguageUnsupported 1623
+#define kNtErrorInstallTransformFailure 1624
+#define kNtErrorInstallPackageRejected 1625
+#define kNtErrorFunctionNotCalled 1626
+#define kNtErrorFunctionFailed 1627
+#define kNtErrorInvalidTable 1628
+#define kNtErrorDatatypeMismatch 1629
+#define kNtErrorUnsupportedType 1630
+#define kNtErrorCreateFailed 1631
+#define kNtErrorInstallTempUnwritable 1632
+#define kNtErrorInstallPlatformUnsupported 1633
+#define kNtErrorInstallNotused 1634
+#define kNtErrorPatchPackageOpenFailed 1635
+#define kNtErrorPatchPackageInvalid 1636
+#define kNtErrorPatchPackageUnsupported 1637
+#define kNtErrorProductVersion 1638
+#define kNtErrorInvalidCommandLine 1639 /* E2BIG */
+#define kNtErrorInstallRemoteDisallowed 1640
+#define kNtErrorSuccessRebootInitiated 1641
+#define kNtErrorPatchTargetNotFound 1642
+#define kNtErrorPatchPackageRejected 1643
+#define kNtErrorInstallTransformRejected 1644
+#define kNtErrorInstallRemoteProhibited 1645
+#define kNtErrorPatchRemovalUnsupported 1646
+#define kNtErrorUnknownPatch 1647
+#define kNtErrorPatchNoSequence 1648
+#define kNtErrorPatchRemovalDisallowed 1649
+#define kNtErrorInvalidPatchXml 1650
+#define kNtErrorPatchManagedAdvertisedProduct 1651
+#define kNtErrorInstallServiceSafeboot 1652
+#define kNtErrorFailFastException 1653
+#define kNtErrorInstallRejected 1654
+#define kNtErrorDynamicCodeBlocked 1655
+#define kNtErrorNotSameObject 1656
+#define kNtErrorStrictCfgViolation 1657
+#define kNtErrorSetContextDenied 1660
+#define kNtErrorCrossPartitionViolation 1661
+#define kNtErrorInvalidUserBuffer 1784
+#define kNtErrorUnrecognizedMedia 1785
+#define kNtErrorNoTrustLsaSecret 1786
+#define kNtErrorNoTrustSamAccount 1787
+#define kNtErrorTrustedDomainFailure 1788
+#define kNtErrorTrustedRelationshipFailure 1789
+#define kNtErrorTrustFailure 1790
+#define kNtErrorNetlogonNotStarted 1792
+#define kNtErrorAccountExpired 1793
+#define kNtErrorRedirectorHasOpenHandles 1794
+#define kNtErrorPrinterDriverAlreadyInstalled 1795
+#define kNtErrorUnknownPort 1796
+#define kNtErrorUnknownPrinterDriver 1797
+#define kNtErrorUnknownPrintprocessor 1798
+#define kNtErrorInvalidSeparatorFile 1799
+#define kNtErrorInvalidPriority 1800
+#define kNtErrorInvalidPrinterName 1801
+#define kNtErrorPrinterAlreadyExists 1802
+#define kNtErrorInvalidPrinterCommand 1803
+#define kNtErrorInvalidDatatype 1804
+#define kNtErrorInvalidEnvironment 1805
+#define kNtErrorNologonInterdomainTrustAccount 1807
+#define kNtErrorNologonWorkstationTrustAccount 1808
+#define kNtErrorNologonServerTrustAccount 1809
+#define kNtErrorDomainTrustInconsistent 1810
+#define kNtErrorServerHasOpenHandles 1811
+#define kNtErrorResourceDataNotFound 1812
+#define kNtErrorResourceTypeNotFound 1813
+#define kNtErrorResourceNameNotFound 1814
+#define kNtErrorResourceLangNotFound 1815
+#define kNtErrorNotEnoughQuota 1816
+#define kNtErrorInvalidTime 1901
+#define kNtErrorInvalidFormName 1902
+#define kNtErrorInvalidFormSize 1903
+#define kNtErrorAlreadyWaiting 1904
+#define kNtErrorPrinterDeleted 1905
+#define kNtErrorInvalidPrinterState 1906
+#define kNtErrorPasswordMustChange 1907
+#define kNtErrorDomainControllerNotFound 1908
+#define kNtErrorAccountLockedOut 1909
+#define kNtErrorNoSitename 1919
+#define kNtErrorCantAccessFile 1920
+#define kNtErrorCantResolveFilename 1921
+#define kNtErrorKmDriverBlocked 1930
+#define kNtErrorContextExpired 1931
+#define kNtErrorPerUserTrustQuotaExceeded 1932
+#define kNtErrorAllUserTrustQuotaExceeded 1933
+#define kNtErrorUserDeleteTrustQuotaExceeded 1934
+#define kNtErrorAuthenticationFirewallFailed 1935
+#define kNtErrorRemotePrintConnectionsBlocked 1936
+#define kNtErrorNtlmBlocked 1937
+#define kNtErrorPasswordChangeRequired 1938
+#define kNtErrorLostModeLogonRestriction 1939
+#define kNtErrorInvalidPixelFormat 2000
+#define kNtErrorBadDriver 2001
+#define kNtErrorInvalidWindowStyle 2002
+#define kNtErrorMetafileNotSupported 2003
+#define kNtErrorTransformNotSupported 2004
+#define kNtErrorClippingNotSupported 2005
+#define kNtErrorInvalidCmm 2010
+#define kNtErrorInvalidProfile 2011
+#define kNtErrorTagNotFound 2012
+#define kNtErrorTagNotPresent 2013
+#define kNtErrorDuplicateTag 2014
+#define kNtErrorProfileNotAssociatedWithDevice 2015
+#define kNtErrorProfileNotFound 2016
+#define kNtErrorInvalidColorspace 2017
+#define kNtErrorIcmNotEnabled 2018
+#define kNtErrorDeletingIcmXform 2019
+#define kNtErrorInvalidTransform 2020
+#define kNtErrorColorspaceMismatch 2021
+#define kNtErrorInvalidColorindex 2022
+#define kNtErrorProfileDoesNotMatchDevice 2023
+#define kNtErrorConnectedOtherPassword 2108
+#define kNtErrorConnectedOtherPasswordDefault 2109
+#define kNtErrorBadUsername 2202
+#define kNtErrorNotConnected 2250
+#define kNtErrorOpenFiles 2401
+#define kNtErrorActiveConnections 2402
+#define kNtErrorDeviceInUse 2404
+#define kNtErrorUnknownPrintMonitor 3000
+#define kNtErrorPrinterDriverInUse 3001
+#define kNtErrorSpoolFileNotFound 3002
+#define kNtErrorSplNoStartdoc 3003
+#define kNtErrorSplNoAddjob 3004
+#define kNtErrorPrintProcessorAlreadyInstalled 3005
+#define kNtErrorPrintMonitorAlreadyInstalled 3006
+#define kNtErrorInvalidPrintMonitor 3007
+#define kNtErrorPrintMonitorInUse 3008
+#define kNtErrorPrinterHasJobsQueued 3009
+#define kNtErrorSuccessRebootRequired 3010
+#define kNtErrorSuccessRestartRequired 3011
+#define kNtErrorPrinterNotFound 3012
+#define kNtErrorPrinterDriverWarned 3013
+#define kNtErrorPrinterDriverBlocked 3014
+#define kNtErrorPrinterDriverPackageInUse 3015
+#define kNtErrorCoreDriverPackageNotFound 3016
+#define kNtErrorFailRebootRequired 3017
+#define kNtErrorFailRebootInitiated 3018
+#define kNtErrorPrinterDriverDownloadNeeded 3019
+#define kNtErrorPrintJobRestartRequired 3020
+#define kNtErrorInvalidPrinterDriverManifest 3021
+#define kNtErrorPrinterNotShareable 3022
+#define kNtErrorRequestPaused 3050
+#define kNtErrorAppexecConditionNotSatisfied 3060
+#define kNtErrorAppexecHandleInvalidated 3061
+#define kNtErrorAppexecInvalidHostGeneration 3062
+#define kNtErrorAppexecUnexpectedProcessRegistration 3063
+#define kNtErrorAppexecInvalidHostState 3064
+#define kNtErrorAppexecNoDonor 3065
+#define kNtErrorAppexecHostIdMismatch 3066
+#define kNtErrorIoReissueAsCached 3950
+#define kNtErrorWinsInternal 4000
+#define kNtErrorCanNotDelLocalWins 4001
+#define kNtErrorStaticInit 4002
+#define kNtErrorIncBackup 4003
+#define kNtErrorFullBackup 4004
+#define kNtErrorRecNonExistent 4005
+#define kNtErrorRplNotAllowed 4006
+#define kNtErrorDhcpAddressConflict 4100
+#define kNtErrorWmiGuidNotFound 4200
+#define kNtErrorWmiInstanceNotFound 4201
+#define kNtErrorWmiItemidNotFound 4202
+#define kNtErrorWmiTryAgain 4203
+#define kNtErrorWmiDpNotFound 4204
+#define kNtErrorWmiUnresolvedInstanceRef 4205
+#define kNtErrorWmiAlreadyEnabled 4206
+#define kNtErrorWmiGuidDisconnected 4207
+#define kNtErrorWmiServerUnavailable 4208
+#define kNtErrorWmiDpFailed 4209
+#define kNtErrorWmiInvalidMof 4210
+#define kNtErrorWmiInvalidReginfo 4211
+#define kNtErrorWmiAlreadyDisabled 4212
+#define kNtErrorWmiReadOnly 4213
+#define kNtErrorWmiSetFailure 4214
+#define kNtErrorNotAppcontainer 4250
+#define kNtErrorAppcontainerRequired 4251
+#define kNtErrorNotSupportedInAppcontainer 4252
+#define kNtErrorInvalidPackageSidLength 4253
+#define kNtErrorInvalidMedia 4300
+#define kNtErrorInvalidLibrary 4301
+#define kNtErrorInvalidMediaPool 4302
+#define kNtErrorDriveMediaMismatch 4303
+#define kNtErrorMediaOffline 4304
+#define kNtErrorLibraryOffline 4305
+#define kNtErrorEmpty 4306
+#define kNtErrorNotEmpty 4307
+#define kNtErrorMediaUnavailable 4308
+#define kNtErrorResourceDisabled 4309
+#define kNtErrorInvalidCleaner 4310
+#define kNtErrorUnableToClean 4311
+#define kNtErrorObjectNotFound 4312
+#define kNtErrorDatabaseFailure 4313
+#define kNtErrorDatabaseFull 4314
+#define kNtErrorMediaIncompatible 4315
+#define kNtErrorResourceNotPresent 4316
+#define kNtErrorInvalidOperation 4317
+#define kNtErrorMediaNotAvailable 4318
+#define kNtErrorDeviceNotAvailable 4319
+#define kNtErrorRequestRefused 4320
+#define kNtErrorInvalidDriveObject 4321
+#define kNtErrorLibraryFull 4322
+#define kNtErrorMediumNotAccessible 4323
+#define kNtErrorUnableToLoadMedium 4324
+#define kNtErrorUnableToInventoryDrive 4325
+#define kNtErrorUnableToInventorySlot 4326
+#define kNtErrorUnableToInventoryTransport 4327
+#define kNtErrorTransportFull 4328
+#define kNtErrorControllingIeport 4329
+#define kNtErrorUnableToEjectMountedMedia 4330
+#define kNtErrorCleanerSlotSet 4331
+#define kNtErrorCleanerSlotNotSet 4332
+#define kNtErrorCleanerCartridgeSpent 4333
+#define kNtErrorUnexpectedOmid 4334
+#define kNtErrorCantDeleteLastItem 4335
+#define kNtErrorMessageExceedsMaxSize 4336
+#define kNtErrorVolumeContainsSysFiles 4337
+#define kNtErrorIndigenousType 4338
+#define kNtErrorNoSupportingDrives 4339
+#define kNtErrorCleanerCartridgeInstalled 4340
+#define kNtErrorIeportFull 4341
+#define kNtErrorFileOffline 4350
+#define kNtErrorRemoteStorageNotActive 4351
+#define kNtErrorRemoteStorageMediaError 4352
+#define kNtErrorNotAReparsePoint 4390
+#define kNtErrorReparseAttributeConflict 4391
+#define kNtErrorInvalidReparseData 4392
+#define kNtErrorReparseTagInvalid 4393
+#define kNtErrorReparseTagMismatch 4394
+#define kNtErrorReparsePointEncountered 4395
+#define kNtErrorAppDataNotFound 4400
+#define kNtErrorAppDataExpired 4401
+#define kNtErrorAppDataCorrupt 4402
+#define kNtErrorAppDataLimitExceeded 4403
+#define kNtErrorAppDataRebootRequired 4404
+#define kNtErrorSecurebootRollbackDetected 4420
+#define kNtErrorSecurebootPolicyViolation 4421
+#define kNtErrorSecurebootInvalidPolicy 4422
+#define kNtErrorSecurebootPolicyPublisherNotFound 4423
+#define kNtErrorSecurebootPolicyNotSigned 4424
+#define kNtErrorSecurebootNotEnabled 4425
+#define kNtErrorSecurebootFileReplaced 4426
+#define kNtErrorSecurebootPolicyNotAuthorized 4427
+#define kNtErrorSecurebootPolicyUnknown 4428
+#define kNtErrorSecurebootPolicyMissingAntirollbackversion 4429
+#define kNtErrorSecurebootPlatformIdMismatch 4430
+#define kNtErrorSecurebootPolicyRollbackDetected 4431
+#define kNtErrorSecurebootPolicyUpgradeMismatch 4432
+#define kNtErrorSecurebootRequiredPolicyFileMissing 4433
+#define kNtErrorSecurebootNotBasePolicy 4434
+#define kNtErrorSecurebootNotSupplementalPolicy 4435
+#define kNtErrorOffloadReadFltNotSupported 4440
+#define kNtErrorOffloadWriteFltNotSupported 4441
+#define kNtErrorOffloadReadFileNotSupported 4442
+#define kNtErrorOffloadWriteFileNotSupported 4443
+#define kNtErrorAlreadyHasStreamId 4444
+#define kNtErrorSmrGarbageCollectionRequired 4445
+#define kNtErrorWofWimHeaderCorrupt 4446
+#define kNtErrorWofWimResourceTableCorrupt 4447
+#define kNtErrorWofFileResourceTableCorrupt 4448
+#define kNtErrorVolumeNotSisEnabled 4500
+#define kNtErrorSystemIntegrityRollbackDetected 4550
+#define kNtErrorSystemIntegrityPolicyViolation 4551
+#define kNtErrorSystemIntegrityInvalidPolicy 4552
+#define kNtErrorSystemIntegrityPolicyNotSigned 4553
+#define kNtErrorVsmNotInitialized 4560
+#define kNtErrorVsmDmaProtectionNotInUse 4561
+#define kNtErrorPlatformManifestNotAuthorized 4570
+#define kNtErrorPlatformManifestInvalid 4571
+#define kNtErrorPlatformManifestFileNotAuthorized 4572
+#define kNtErrorPlatformManifestCatalogNotAuthorized 4573
+#define kNtErrorPlatformManifestBinaryIdNotFound 4574
+#define kNtErrorPlatformManifestNotActive 4575
+#define kNtErrorPlatformManifestNotSigned 4576
+#define kNtErrorDependentResourceExists 5001
+#define kNtErrorDependencyNotFound 5002
+#define kNtErrorDependencyAlreadyExists 5003
+#define kNtErrorResourceNotOnline 5004
+#define kNtErrorHostNodeNotAvailable 5005
+#define kNtErrorResourceNotAvailable 5006
+#define kNtErrorResourceNotFound 5007
+#define kNtErrorShutdownCluster 5008
+#define kNtErrorCantEvictActiveNode 5009
+#define kNtErrorObjectAlreadyExists 5010
+#define kNtErrorObjectInList 5011
+#define kNtErrorGroupNotAvailable 5012
+#define kNtErrorGroupNotFound 5013
+#define kNtErrorGroupNotOnline 5014
+#define kNtErrorHostNodeNotResourceOwner 5015
+#define kNtErrorHostNodeNotGroupOwner 5016
+#define kNtErrorResmonCreateFailed 5017
+#define kNtErrorResmonOnlineFailed 5018
+#define kNtErrorResourceOnline 5019
+#define kNtErrorQuorumResource 5020
+#define kNtErrorNotQuorumCapable 5021
+#define kNtErrorClusterShuttingDown 5022
+#define kNtErrorInvalidState 5023
+#define kNtErrorResourcePropertiesStored 5024
+#define kNtErrorNotQuorumClass 5025
+#define kNtErrorCoreResource 5026
+#define kNtErrorQuorumResourceOnlineFailed 5027
+#define kNtErrorQuorumlogOpenFailed 5028
+#define kNtErrorClusterlogCorrupt 5029
+#define kNtErrorClusterlogRecordExceedsMaxsize 5030
+#define kNtErrorClusterlogExceedsMaxsize 5031
+#define kNtErrorClusterlogChkpointNotFound 5032
+#define kNtErrorClusterlogNotEnoughSpace 5033
+#define kNtErrorQuorumOwnerAlive 5034
+#define kNtErrorNetworkNotAvailable 5035
+#define kNtErrorNodeNotAvailable 5036
+#define kNtErrorAllNodesNotAvailable 5037
+#define kNtErrorResourceFailed 5038
+#define kNtErrorClusterInvalidNode 5039
+#define kNtErrorClusterNodeExists 5040
+#define kNtErrorClusterJoinInProgress 5041
+#define kNtErrorClusterNodeNotFound 5042
+#define kNtErrorClusterLocalNodeNotFound 5043
+#define kNtErrorClusterNetworkExists 5044
+#define kNtErrorClusterNetworkNotFound 5045
+#define kNtErrorClusterNetinterfaceExists 5046
+#define kNtErrorClusterNetinterfaceNotFound 5047
+#define kNtErrorClusterInvalidRequest 5048
+#define kNtErrorClusterInvalidNetworkProvider 5049
+#define kNtErrorClusterNodeDown 5050
+#define kNtErrorClusterNodeUnreachable 5051
+#define kNtErrorClusterNodeNotMember 5052
+#define kNtErrorClusterJoinNotInProgress 5053
+#define kNtErrorClusterInvalidNetwork 5054
+#define kNtErrorClusterNodeUp 5056
+#define kNtErrorClusterIpaddrInUse 5057
+#define kNtErrorClusterNodeNotPaused 5058
+#define kNtErrorClusterNoSecurityContext 5059
+#define kNtErrorClusterNetworkNotInternal 5060
+#define kNtErrorClusterNodeAlreadyUp 5061
+#define kNtErrorClusterNodeAlreadyDown 5062
+#define kNtErrorClusterNetworkAlreadyOnline 5063
+#define kNtErrorClusterNetworkAlreadyOffline 5064
+#define kNtErrorClusterNodeAlreadyMember 5065
+#define kNtErrorClusterLastInternalNetwork 5066
+#define kNtErrorClusterNetworkHasDependents 5067
+#define kNtErrorInvalidOperationOnQuorum 5068
+#define kNtErrorDependencyNotAllowed 5069
+#define kNtErrorClusterNodePaused 5070
+#define kNtErrorNodeCantHostResource 5071
+#define kNtErrorClusterNodeNotReady 5072
+#define kNtErrorClusterNodeShuttingDown 5073
+#define kNtErrorClusterJoinAborted 5074
+#define kNtErrorClusterIncompatibleVersions 5075
+#define kNtErrorClusterMaxnumOfResourcesExceeded 5076
+#define kNtErrorClusterSystemConfigChanged 5077
+#define kNtErrorClusterResourceTypeNotFound 5078
+#define kNtErrorClusterRestypeNotSupported 5079
+#define kNtErrorClusterResnameNotFound 5080
+#define kNtErrorClusterNoRpcPackagesRegistered 5081
+#define kNtErrorClusterOwnerNotInPreflist 5082
+#define kNtErrorClusterDatabaseSeqmismatch 5083
+#define kNtErrorResmonInvalidState 5084
+#define kNtErrorClusterGumNotLocker 5085
+#define kNtErrorQuorumDiskNotFound 5086
+#define kNtErrorDatabaseBackupCorrupt 5087
+#define kNtErrorClusterNodeAlreadyHasDfsRoot 5088
+#define kNtErrorResourcePropertyUnchangeable 5089
+#define kNtErrorNoAdminAccessPoint 5090
+#define kNtErrorClusterMembershipInvalidState 5890
+#define kNtErrorClusterQuorumlogNotFound 5891
+#define kNtErrorClusterMembershipHalt 5892
+#define kNtErrorClusterInstanceIdMismatch 5893
+#define kNtErrorClusterNetworkNotFoundForIp 5894
+#define kNtErrorClusterPropertyDataTypeMismatch 5895
+#define kNtErrorClusterEvictWithoutCleanup 5896
+#define kNtErrorClusterParameterMismatch 5897
+#define kNtErrorNodeCannotBeClustered 5898
+#define kNtErrorClusterWrongOsVersion 5899
+#define kNtErrorClusterCantCreateDupClusterName 5900
+#define kNtErrorCluscfgAlreadyCommitted 5901
+#define kNtErrorCluscfgRollbackFailed 5902
+#define kNtErrorCluscfgSystemDiskDriveLetterConflict 5903
+#define kNtErrorClusterOldVersion 5904
+#define kNtErrorClusterMismatchedComputerAcctName 5905
+#define kNtErrorClusterNoNetAdapters 5906
+#define kNtErrorClusterPoisoned 5907
+#define kNtErrorClusterGroupMoving 5908
+#define kNtErrorClusterResourceTypeBusy 5909
+#define kNtErrorResourceCallTimedOut 5910
+#define kNtErrorInvalidClusterIpv6Address 5911
+#define kNtErrorClusterInternalInvalidFunction 5912
+#define kNtErrorClusterParameterOutOfBounds 5913
+#define kNtErrorClusterPartialSend 5914
+#define kNtErrorClusterRegistryInvalidFunction 5915
+#define kNtErrorClusterInvalidStringTermination 5916
+#define kNtErrorClusterInvalidStringFormat 5917
+#define kNtErrorClusterDatabaseTransactionInProgress 5918
+#define kNtErrorClusterDatabaseTransactionNotInProgress 5919
+#define kNtErrorClusterNullData 5920
+#define kNtErrorClusterPartialRead 5921
+#define kNtErrorClusterPartialWrite 5922
+#define kNtErrorClusterCantDeserializeData 5923
+#define kNtErrorDependentResourcePropertyConflict 5924
+#define kNtErrorClusterNoQuorum 5925
+#define kNtErrorClusterInvalidIpv6Network 5926
+#define kNtErrorClusterInvalidIpv6TunnelNetwork 5927
+#define kNtErrorQuorumNotAllowedInThisGroup 5928
+#define kNtErrorDependencyTreeTooComplex 5929
+#define kNtErrorExceptionInResourceCall 5930
+#define kNtErrorClusterRhsFailedInitialization 5931
+#define kNtErrorClusterNotInstalled 5932
+#define kNtErrorClusterResourcesMustBeOnlineOnTheSameNode 5933
+#define kNtErrorClusterMaxNodesInCluster 5934
+#define kNtErrorClusterTooManyNodes 5935
+#define kNtErrorClusterObjectAlreadyUsed 5936
+#define kNtErrorNoncoreGroupsFound 5937
+#define kNtErrorFileShareResourceConflict 5938
+#define kNtErrorClusterEvictInvalidRequest 5939
+#define kNtErrorClusterSingletonResource 5940
+#define kNtErrorClusterGroupSingletonResource 5941
+#define kNtErrorClusterResourceProviderFailed 5942
+#define kNtErrorClusterResourceConfigurationError 5943
+#define kNtErrorClusterGroupBusy 5944
+#define kNtErrorClusterNotSharedVolume 5945
+#define kNtErrorClusterInvalidSecurityDescriptor 5946
+#define kNtErrorClusterSharedVolumesInUse 5947
+#define kNtErrorClusterUseSharedVolumesApi 5948
+#define kNtErrorClusterBackupInProgress 5949
+#define kNtErrorNonCsvPath 5950
+#define kNtErrorCsvVolumeNotLocal 5951
+#define kNtErrorClusterWatchdogTerminating 5952
+#define kNtErrorClusterResourceVetoedMoveIncompatibleNodes 5953
+#define kNtErrorClusterInvalidNodeWeight 5954
+#define kNtErrorClusterResourceVetoedCall 5955
+#define kNtErrorResmonSystemResourcesLacking 5956
+#define kNtErrorClusterResourceVetoedMoveNotEnoughResourcesOnSource 5958
+#define kNtErrorClusterGroupQueued 5959
+#define kNtErrorClusterResourceLockedStatus 5960
+#define kNtErrorClusterSharedVolumeFailoverNotAllowed 5961
+#define kNtErrorClusterNodeDrainInProgress 5962
+#define kNtErrorClusterDiskNotConnected 5963
+#define kNtErrorDiskNotCsvCapable 5964
+#define kNtErrorResourceNotInAvailableStorage 5965
+#define kNtErrorClusterSharedVolumeRedirected 5966
+#define kNtErrorClusterSharedVolumeNotRedirected 5967
+#define kNtErrorClusterCannotReturnProperties 5968
+#define kNtErrorClusterResourceIsInMaintenanceMode 5970
+#define kNtErrorClusterAffinityConflict 5971
+#define kNtErrorClusterResourceIsReplicaVirtualMachine 5972
+#define kNtErrorClusterUpgradeIncompatibleVersions 5973
+#define kNtErrorClusterUpgradeFixQuorumNotSupported 5974
+#define kNtErrorClusterUpgradeRestartRequired 5975
+#define kNtErrorClusterUpgradeInProgress 5976
+#define kNtErrorClusterUpgradeIncomplete 5977
+#define kNtErrorClusterNodeInGracePeriod 5978
+#define kNtErrorClusterCsvIoPauseTimeout 5979
+#define kNtErrorNodeNotActiveClusterMember 5980
+#define kNtErrorClusterResourceNotMonitored 5981
+#define kNtErrorClusterResourceDoesNotSupportUnmonitored 5982
+#define kNtErrorClusterResourceIsReplicated 5983
+#define kNtErrorClusterNodeIsolated 5984
+#define kNtErrorClusterNodeQuarantined 5985
+#define kNtErrorClusterDatabaseUpdateConditionFailed 5986
+#define kNtErrorClusterSpaceDegraded 5987
+#define kNtErrorClusterTokenDelegationNotSupported 5988
+#define kNtErrorClusterCsvInvalidHandle 5989
+#define kNtErrorClusterCsvSupportedOnlyOnCoordinator 5990
+#define kNtErrorGroupsetNotAvailable 5991
+#define kNtErrorGroupsetNotFound 5992
+#define kNtErrorGroupsetCantProvide 5993
+#define kNtErrorClusterFaultDomainParentNotFound 5994
+#define kNtErrorClusterFaultDomainInvalidHierarchy 5995
+#define kNtErrorClusterFaultDomainFailedS2dValidation 5996
+#define kNtErrorClusterFaultDomainS2dConnectivityLoss 5997
+#define kNtErrorClusterInvalidInfrastructureFileserverName 5998
+#define kNtErrorClustersetManagementClusterUnreachable 5999
+#define kNtErrorEncryptionFailed 6000
+#define kNtErrorDecryptionFailed 6001
+#define kNtErrorFileEncrypted 6002
+#define kNtErrorNoRecoveryPolicy 6003
+#define kNtErrorNoEfs 6004
+#define kNtErrorWrongEfs 6005
+#define kNtErrorNoUserKeys 6006
+#define kNtErrorFileNotEncrypted 6007
+#define kNtErrorNotExportFormat 6008
+#define kNtErrorFileReadOnly 6009 /* EROFS */
+#define kNtErrorDirEfsDisallowed 6010
+#define kNtErrorEfsServerNotTrusted 6011
+#define kNtErrorBadRecoveryPolicy 6012
+#define kNtErrorEfsAlgBlobTooBig 6013
+#define kNtErrorVolumeNotSupportEfs 6014
+#define kNtErrorEfsDisabled 6015
+#define kNtErrorEfsVersionNotSupport 6016
+#define kNtErrorCsEncryptionInvalidServerResponse 6017
+#define kNtErrorCsEncryptionUnsupportedServer 6018
+#define kNtErrorCsEncryptionExistingEncryptedFile 6019
+#define kNtErrorCsEncryptionNewEncryptedFile 6020
+#define kNtErrorCsEncryptionFileNotCse 6021
+#define kNtErrorEncryptionPolicyDeniesOperation 6022
+#define kNtErrorNoBrowserServersFound 6118
+#define kNtErrorLogSectorInvalid 6600
+#define kNtErrorLogSectorParityInvalid 6601
+#define kNtErrorLogSectorRemapped 6602
+#define kNtErrorLogBlockIncomplete 6603
+#define kNtErrorLogInvalidRange 6604
+#define kNtErrorLogBlocksExhausted 6605
+#define kNtErrorLogReadContextInvalid 6606
+#define kNtErrorLogRestartInvalid 6607
+#define kNtErrorLogBlockVersion 6608
+#define kNtErrorLogBlockInvalid 6609
+#define kNtErrorLogReadModeInvalid 6610
+#define kNtErrorLogNoRestart 6611
+#define kNtErrorLogMetadataCorrupt 6612
+#define kNtErrorLogMetadataInvalid 6613
+#define kNtErrorLogMetadataInconsistent 6614
+#define kNtErrorLogReservationInvalid 6615
+#define kNtErrorLogCantDelete 6616
+#define kNtErrorLogContainerLimitExceeded 6617
+#define kNtErrorLogStartOfLog 6618
+#define kNtErrorLogPolicyAlreadyInstalled 6619
+#define kNtErrorLogPolicyNotInstalled 6620
+#define kNtErrorLogPolicyInvalid 6621
+#define kNtErrorLogPolicyConflict 6622
+#define kNtErrorLogPinnedArchiveTail 6623
+#define kNtErrorLogRecordNonexistent 6624
+#define kNtErrorLogRecordsReservedInvalid 6625
+#define kNtErrorLogSpaceReservedInvalid 6626
+#define kNtErrorLogTailInvalid 6627
+#define kNtErrorLogFull 6628
+#define kNtErrorCouldNotResizeLog 6629
+#define kNtErrorLogMultiplexed 6630
+#define kNtErrorLogDedicated 6631
+#define kNtErrorLogArchiveNotInProgress 6632
+#define kNtErrorLogArchiveInProgress 6633
+#define kNtErrorLogEphemeral 6634
+#define kNtErrorLogNotEnoughContainers 6635
+#define kNtErrorLogClientAlreadyRegistered 6636
+#define kNtErrorLogClientNotRegistered 6637
+#define kNtErrorLogFullHandlerInProgress 6638
+#define kNtErrorLogContainerReadFailed 6639
+#define kNtErrorLogContainerWriteFailed 6640
+#define kNtErrorLogContainerOpenFailed 6641
+#define kNtErrorLogContainerStateInvalid 6642
+#define kNtErrorLogStateInvalid 6643
+#define kNtErrorLogPinned 6644
+#define kNtErrorLogMetadataFlushFailed 6645
+#define kNtErrorLogInconsistentSecurity 6646
+#define kNtErrorLogAppendedFlushFailed 6647
+#define kNtErrorLogPinnedReservation 6648
+#define kNtErrorInvalidTransaction 6700
+#define kNtErrorTransactionNotActive 6701
+#define kNtErrorTransactionRequestNotValid 6702
+#define kNtErrorTransactionNotRequested 6703
+#define kNtErrorTransactionAlreadyAborted 6704
+#define kNtErrorTransactionAlreadyCommitted 6705
+#define kNtErrorTmInitializationFailed 6706
+#define kNtErrorResourcemanagerReadOnly 6707
+#define kNtErrorTransactionNotJoined 6708
+#define kNtErrorTransactionSuperiorExists 6709
+#define kNtErrorCrmProtocolAlreadyExists 6710
+#define kNtErrorTransactionPropagationFailed 6711
+#define kNtErrorCrmProtocolNotFound 6712
+#define kNtErrorTransactionInvalidMarshallBuffer 6713
+#define kNtErrorCurrentTransactionNotValid 6714
+#define kNtErrorTransactionNotFound 6715
+#define kNtErrorResourcemanagerNotFound 6716
+#define kNtErrorEnlistmentNotFound 6717
+#define kNtErrorTransactionmanagerNotFound 6718
+#define kNtErrorTransactionmanagerNotOnline 6719
+#define kNtErrorTransactionmanagerRecoveryNameCollision 6720
+#define kNtErrorTransactionNotRoot 6721
+#define kNtErrorTransactionObjectExpired 6722
+#define kNtErrorTransactionResponseNotEnlisted 6723
+#define kNtErrorTransactionRecordTooLong 6724
+#define kNtErrorImplicitTransactionNotSupported 6725
+#define kNtErrorTransactionIntegrityViolated 6726
+#define kNtErrorTransactionmanagerIdentityMismatch 6727
+#define kNtErrorRmCannotBeFrozenForSnapshot 6728
+#define kNtErrorTransactionMustWritethrough 6729
+#define kNtErrorTransactionNoSuperior 6730
+#define kNtErrorHeuristicDamagePossible 6731
+#define kNtErrorTransactionalConflict 6800
+#define kNtErrorRmNotActive 6801
+#define kNtErrorRmMetadataCorrupt 6802
+#define kNtErrorDirectoryNotRm 6803
+#define kNtErrorTransactionsUnsupportedRemote 6805
+#define kNtErrorLogResizeInvalidSize 6806
+#define kNtErrorObjectNoLongerExists 6807
+#define kNtErrorStreamMiniversionNotFound 6808
+#define kNtErrorStreamMiniversionNotValid 6809
+#define kNtErrorMiniversionInaccessibleFromSpecifiedTransaction 6810
+#define kNtErrorCantOpenMiniversionWithModifyIntent 6811
+#define kNtErrorCantCreateMoreStreamMiniversions 6812
+#define kNtErrorRemoteFileVersionMismatch 6814
+#define kNtErrorHandleNoLongerValid 6815
+#define kNtErrorNoTxfMetadata 6816
+#define kNtErrorLogCorruptionDetected 6817
+#define kNtErrorCantRecoverWithHandleOpen 6818
+#define kNtErrorRmDisconnected 6819
+#define kNtErrorEnlistmentNotSuperior 6820
+#define kNtErrorRecoveryNotNeeded 6821
+#define kNtErrorRmAlreadyStarted 6822
+#define kNtErrorFileIdentityNotPersistent 6823
+#define kNtErrorCantBreakTransactionalDependency 6824
+#define kNtErrorCantCrossRmBoundary 6825
+#define kNtErrorTxfDirNotEmpty 6826
+#define kNtErrorIndoubtTransactionsExist 6827
+#define kNtErrorTmVolatile 6828
+#define kNtErrorRollbackTimerExpired 6829
+#define kNtErrorTxfAttributeCorrupt 6830
+#define kNtErrorEfsNotAllowedInTransaction 6831
+#define kNtErrorTransactionalOpenNotAllowed 6832
+#define kNtErrorLogGrowthFailed 6833
+#define kNtErrorTransactedMappingUnsupportedRemote 6834
+#define kNtErrorTxfMetadataAlreadyPresent 6835
+#define kNtErrorTransactionScopeCallbacksNotSet 6836
+#define kNtErrorTransactionRequiredPromotion 6837
+#define kNtErrorCannotExecuteFileInTransaction 6838
+#define kNtErrorTransactionsNotFrozen 6839
+#define kNtErrorTransactionFreezeInProgress 6840
+#define kNtErrorNotSnapshotVolume 6841
+#define kNtErrorNoSavepointWithOpenFiles 6842
+#define kNtErrorDataLostRepair 6843
+#define kNtErrorSparseNotAllowedInTransaction 6844
+#define kNtErrorTmIdentityMismatch 6845
+#define kNtErrorFloatedSection 6846
+#define kNtErrorCannotAcceptTransactedWork 6847
+#define kNtErrorCannotAbortTransactions 6848
+#define kNtErrorBadClusters 6849
+#define kNtErrorCompressionNotAllowedInTransaction 6850
+#define kNtErrorVolumeDirty 6851
+#define kNtErrorNoLinkTrackingInTransaction 6852
+#define kNtErrorOperationNotSupportedInTransaction 6853
+#define kNtErrorExpiredHandle 6854
+#define kNtErrorTransactionNotEnlisted 6855
+#define kNtErrorCtxWinstationNameInvalid 7001
+#define kNtErrorCtxInvalidPd 7002
+#define kNtErrorCtxPdNotFound 7003
+#define kNtErrorCtxWdNotFound 7004
+#define kNtErrorCtxCannotMakeEventlogEntry 7005
+#define kNtErrorCtxServiceNameCollision 7006
+#define kNtErrorCtxClosePending 7007
+#define kNtErrorCtxNoOutbuf 7008
+#define kNtErrorCtxModemInfNotFound 7009
+#define kNtErrorCtxInvalidModemname 7010
+#define kNtErrorCtxModemResponseError 7011
+#define kNtErrorCtxModemResponseTimeout 7012
+#define kNtErrorCtxModemResponseNoCarrier 7013
+#define kNtErrorCtxModemResponseNoDialtone 7014
+#define kNtErrorCtxModemResponseBusy 7015
+#define kNtErrorCtxModemResponseVoice 7016
+#define kNtErrorCtxTdError 7017
+#define kNtErrorCtxWinstationNotFound 7022
+#define kNtErrorCtxWinstationAlreadyExists 7023
+#define kNtErrorCtxWinstationBusy 7024
+#define kNtErrorCtxBadVideoMode 7025
+#define kNtErrorCtxGraphicsInvalid 7035
+#define kNtErrorCtxLogonDisabled 7037
+#define kNtErrorCtxNotConsole 7038
+#define kNtErrorCtxClientQueryTimeout 7040
+#define kNtErrorCtxConsoleDisconnect 7041
+#define kNtErrorCtxConsoleConnect 7042
+#define kNtErrorCtxShadowDenied 7044
+#define kNtErrorCtxWinstationAccessDenied 7045
+#define kNtErrorCtxInvalidWd 7049
+#define kNtErrorCtxShadowInvalid 7050
+#define kNtErrorCtxShadowDisabled 7051
+#define kNtErrorCtxClientLicenseInUse 7052
+#define kNtErrorCtxClientLicenseNotSet 7053
+#define kNtErrorCtxLicenseNotAvailable 7054
+#define kNtErrorCtxLicenseClientInvalid 7055
+#define kNtErrorCtxLicenseExpired 7056
+#define kNtErrorCtxShadowNotRunning 7057
+#define kNtErrorCtxShadowEndedByModeChange 7058
+#define kNtErrorActivationCountExceeded 7059
+#define kNtErrorCtxWinstationsDisabled 7060
+#define kNtErrorCtxEncryptionLevelRequired 7061
+#define kNtErrorCtxSessionInUse 7062
+#define kNtErrorCtxNoForceLogoff 7063
+#define kNtErrorCtxAccountRestriction 7064
+#define kNtErrorRdpProtocolError 7065
+#define kNtErrorCtxCdmConnect 7066
+#define kNtErrorCtxCdmDisconnect 7067
+#define kNtErrorCtxSecurityLayerError 7068
+#define kNtErrorTsIncompatibleSessions 7069
+#define kNtErrorTsVideoSubsystemError 7070
+#define kNtErrorDsNotInstalled 8200
+#define kNtErrorDsMembershipEvaluatedLocally 8201
+#define kNtErrorDsNoAttributeOrValue 8202
+#define kNtErrorDsInvalidAttributeSyntax 8203
+#define kNtErrorDsAttributeTypeUndefined 8204
+#define kNtErrorDsAttributeOrValueExists 8205
+#define kNtErrorDsBusy 8206
+#define kNtErrorDsUnavailable 8207
+#define kNtErrorDsNoRidsAllocated 8208
+#define kNtErrorDsNoMoreRids 8209
+#define kNtErrorDsIncorrectRoleOwner 8210
+#define kNtErrorDsRidmgrInitError 8211
+#define kNtErrorDsObjClassViolation 8212
+#define kNtErrorDsCantOnNonLeaf 8213
+#define kNtErrorDsCantOnRdn 8214
+#define kNtErrorDsCantModObjClass 8215
+#define kNtErrorDsCrossDomMoveError 8216
+#define kNtErrorDsGcNotAvailable 8217
+#define kNtErrorSharedPolicy 8218
+#define kNtErrorPolicyObjectNotFound 8219
+#define kNtErrorPolicyOnlyInDs 8220
+#define kNtErrorPromotionActive 8221
+#define kNtErrorNoPromotionActive 8222
+#define kNtErrorDsOperationsError 8224
+#define kNtErrorDsProtocolError 8225
+#define kNtErrorDsTimelimitExceeded 8226
+#define kNtErrorDsSizelimitExceeded 8227
+#define kNtErrorDsAdminLimitExceeded 8228
+#define kNtErrorDsCompareFalse 8229
+#define kNtErrorDsCompareTrue 8230
+#define kNtErrorDsAuthMethodNotSupported 8231
+#define kNtErrorDsStrongAuthRequired 8232
+#define kNtErrorDsInappropriateAuth 8233
+#define kNtErrorDsAuthUnknown 8234
+#define kNtErrorDsReferral 8235
+#define kNtErrorDsUnavailableCritExtension 8236
+#define kNtErrorDsConfidentialityRequired 8237
+#define kNtErrorDsInappropriateMatching 8238
+#define kNtErrorDsConstraintViolation 8239
+#define kNtErrorDsNoSuchObject 8240
+#define kNtErrorDsAliasProblem 8241
+#define kNtErrorDsInvalidDnSyntax 8242
+#define kNtErrorDsIsLeaf 8243
+#define kNtErrorDsAliasDerefProblem 8244
+#define kNtErrorDsUnwillingToPerform 8245
+#define kNtErrorDsLoopDetect 8246
+#define kNtErrorDsNamingViolation 8247
+#define kNtErrorDsObjectResultsTooLarge 8248
+#define kNtErrorDsAffectsMultipleDsas 8249
+#define kNtErrorDsServerDown 8250
+#define kNtErrorDsLocalError 8251
+#define kNtErrorDsEncodingError 8252
+#define kNtErrorDsDecodingError 8253
+#define kNtErrorDsFilterUnknown 8254
+#define kNtErrorDsParamError 8255
+#define kNtErrorDsNotSupported 8256
+#define kNtErrorDsNoResultsReturned 8257
+#define kNtErrorDsControlNotFound 8258
+#define kNtErrorDsClientLoop 8259
+#define kNtErrorDsReferralLimitExceeded 8260
+#define kNtErrorDsSortControlMissing 8261
+#define kNtErrorDsOffsetRangeError 8262
+#define kNtErrorDsRidmgrDisabled 8263
+#define kNtErrorDsRootMustBeNc 8301
+#define kNtErrorDsAddReplicaInhibited 8302
+#define kNtErrorDsAttNotDefInSchema 8303
+#define kNtErrorDsMaxObjSizeExceeded 8304
+#define kNtErrorDsObjStringNameExists 8305
+#define kNtErrorDsNoRdnDefinedInSchema 8306
+#define kNtErrorDsRdnDoesntMatchSchema 8307
+#define kNtErrorDsNoRequestedAttsFound 8308
+#define kNtErrorDsUserBufferToSmall 8309
+#define kNtErrorDsAttIsNotOnObj 8310
+#define kNtErrorDsIllegalModOperation 8311
+#define kNtErrorDsObjTooLarge 8312
+#define kNtErrorDsBadInstanceType 8313
+#define kNtErrorDsMasterdsaRequired 8314
+#define kNtErrorDsObjectClassRequired 8315
+#define kNtErrorDsMissingRequiredAtt 8316
+#define kNtErrorDsAttNotDefForClass 8317
+#define kNtErrorDsAttAlreadyExists 8318
+#define kNtErrorDsCantAddAttValues 8320
+#define kNtErrorDsSingleValueConstraint 8321
+#define kNtErrorDsRangeConstraint 8322
+#define kNtErrorDsAttValAlreadyExists 8323
+#define kNtErrorDsCantRemMissingAtt 8324
+#define kNtErrorDsCantRemMissingAttVal 8325
+#define kNtErrorDsRootCantBeSubref 8326
+#define kNtErrorDsNoChaining 8327
+#define kNtErrorDsNoChainedEval 8328
+#define kNtErrorDsNoParentObject 8329
+#define kNtErrorDsParentIsAnAlias 8330
+#define kNtErrorDsCantMixMasterAndReps 8331
+#define kNtErrorDsChildrenExist 8332
+#define kNtErrorDsObjNotFound 8333
+#define kNtErrorDsAliasedObjMissing 8334
+#define kNtErrorDsBadNameSyntax 8335
+#define kNtErrorDsAliasPointsToAlias 8336
+#define kNtErrorDsCantDerefAlias 8337
+#define kNtErrorDsOutOfScope 8338
+#define kNtErrorDsObjectBeingRemoved 8339
+#define kNtErrorDsCantDeleteDsaObj 8340
+#define kNtErrorDsGenericError 8341
+#define kNtErrorDsDsaMustBeIntMaster 8342
+#define kNtErrorDsClassNotDsa 8343
+#define kNtErrorDsInsuffAccessRights 8344
+#define kNtErrorDsIllegalSuperior 8345
+#define kNtErrorDsAttributeOwnedBySam 8346
+#define kNtErrorDsNameTooManyParts 8347
+#define kNtErrorDsNameTooLong 8348
+#define kNtErrorDsNameValueTooLong 8349
+#define kNtErrorDsNameUnparseable 8350
+#define kNtErrorDsNameTypeUnknown 8351
+#define kNtErrorDsNotAnObject 8352
+#define kNtErrorDsSecDescTooShort 8353
+#define kNtErrorDsSecDescInvalid 8354
+#define kNtErrorDsNoDeletedName 8355
+#define kNtErrorDsSubrefMustHaveParent 8356
+#define kNtErrorDsNcnameMustBeNc 8357
+#define kNtErrorDsCantAddSystemOnly 8358
+#define kNtErrorDsClassMustBeConcrete 8359
+#define kNtErrorDsInvalidDmd 8360
+#define kNtErrorDsObjGuidExists 8361
+#define kNtErrorDsNotOnBacklink 8362
+#define kNtErrorDsNoCrossrefForNc 8363
+#define kNtErrorDsShuttingDown 8364
+#define kNtErrorDsUnknownOperation 8365
+#define kNtErrorDsInvalidRoleOwner 8366
+#define kNtErrorDsCouldntContactFsmo 8367
+#define kNtErrorDsCrossNcDnRename 8368
+#define kNtErrorDsCantModSystemOnly 8369
+#define kNtErrorDsReplicatorOnly 8370
+#define kNtErrorDsObjClassNotDefined 8371
+#define kNtErrorDsObjClassNotSubclass 8372
+#define kNtErrorDsNameReferenceInvalid 8373
+#define kNtErrorDsCrossRefExists 8374
+#define kNtErrorDsCantDelMasterCrossref 8375
+#define kNtErrorDsSubtreeNotifyNotNcHead 8376
+#define kNtErrorDsNotifyFilterTooComplex 8377
+#define kNtErrorDsDupRdn 8378
+#define kNtErrorDsDupOid 8379
+#define kNtErrorDsDupMapiId 8380
+#define kNtErrorDsDupSchemaIdGuid 8381
+#define kNtErrorDsDupLdapDisplayName 8382
+#define kNtErrorDsSemanticAttTest 8383
+#define kNtErrorDsSyntaxMismatch 8384
+#define kNtErrorDsExistsInMustHave 8385
+#define kNtErrorDsExistsInMayHave 8386
+#define kNtErrorDsNonexistentMayHave 8387
+#define kNtErrorDsNonexistentMustHave 8388
+#define kNtErrorDsAuxClsTestFail 8389
+#define kNtErrorDsNonexistentPossSup 8390
+#define kNtErrorDsSubClsTestFail 8391
+#define kNtErrorDsBadRdnAttIdSyntax 8392
+#define kNtErrorDsExistsInAuxCls 8393
+#define kNtErrorDsExistsInSubCls 8394
+#define kNtErrorDsExistsInPossSup 8395
+#define kNtErrorDsRecalcschemaFailed 8396
+#define kNtErrorDsTreeDeleteNotFinished 8397
+#define kNtErrorDsCantDelete 8398
+#define kNtErrorDsAttSchemaReqId 8399
+#define kNtErrorDsBadAttSchemaSyntax 8400
+#define kNtErrorDsCantCacheAtt 8401
+#define kNtErrorDsCantCacheClass 8402
+#define kNtErrorDsCantRemoveAttCache 8403
+#define kNtErrorDsCantRemoveClassCache 8404
+#define kNtErrorDsCantRetrieveDn 8405
+#define kNtErrorDsMissingSupref 8406
+#define kNtErrorDsCantRetrieveInstance 8407
+#define kNtErrorDsCodeInconsistency 8408
+#define kNtErrorDsDatabaseError 8409
+#define kNtErrorDsGovernsidMissing 8410
+#define kNtErrorDsMissingExpectedAtt 8411
+#define kNtErrorDsNcnameMissingCrRef 8412
+#define kNtErrorDsSecurityCheckingError 8413
+#define kNtErrorDsSchemaNotLoaded 8414
+#define kNtErrorDsSchemaAllocFailed 8415
+#define kNtErrorDsAttSchemaReqSyntax 8416
+#define kNtErrorDsGcverifyError 8417
+#define kNtErrorDsDraSchemaMismatch 8418
+#define kNtErrorDsCantFindDsaObj 8419
+#define kNtErrorDsCantFindExpectedNc 8420
+#define kNtErrorDsCantFindNcInCache 8421
+#define kNtErrorDsCantRetrieveChild 8422
+#define kNtErrorDsSecurityIllegalModify 8423
+#define kNtErrorDsCantReplaceHiddenRec 8424
+#define kNtErrorDsBadHierarchyFile 8425
+#define kNtErrorDsBuildHierarchyTableFailed 8426
+#define kNtErrorDsConfigParamMissing 8427
+#define kNtErrorDsCountingAbIndicesFailed 8428
+#define kNtErrorDsHierarchyTableMallocFailed 8429
+#define kNtErrorDsInternalFailure 8430
+#define kNtErrorDsUnknownError 8431
+#define kNtErrorDsRootRequiresClassTop 8432
+#define kNtErrorDsRefusingFsmoRoles 8433
+#define kNtErrorDsMissingFsmoSettings 8434
+#define kNtErrorDsUnableToSurrenderRoles 8435
+#define kNtErrorDsDraGeneric 8436
+#define kNtErrorDsDraInvalidParameter 8437
+#define kNtErrorDsDraBusy 8438
+#define kNtErrorDsDraBadDn 8439
+#define kNtErrorDsDraBadNc 8440
+#define kNtErrorDsDraDnExists 8441
+#define kNtErrorDsDraInternalError 8442
+#define kNtErrorDsDraInconsistentDit 8443
+#define kNtErrorDsDraConnectionFailed 8444
+#define kNtErrorDsDraBadInstanceType 8445
+#define kNtErrorDsDraOutOfMem 8446
+#define kNtErrorDsDraMailProblem 8447
+#define kNtErrorDsDraRefAlreadyExists 8448
+#define kNtErrorDsDraRefNotFound 8449
+#define kNtErrorDsDraObjIsRepSource 8450
+#define kNtErrorDsDraDbError 8451
+#define kNtErrorDsDraNoReplica 8452
+#define kNtErrorDsDraAccessDenied 8453
+#define kNtErrorDsDraNotSupported 8454
+#define kNtErrorDsDraRpcCancelled 8455
+#define kNtErrorDsDraSourceDisabled 8456
+#define kNtErrorDsDraSinkDisabled 8457
+#define kNtErrorDsDraNameCollision 8458
+#define kNtErrorDsDraSourceReinstalled 8459
+#define kNtErrorDsDraMissingParent 8460
+#define kNtErrorDsDraPreempted 8461
+#define kNtErrorDsDraAbandonSync 8462
+#define kNtErrorDsDraShutdown 8463
+#define kNtErrorDsDraIncompatiblePartialSet 8464
+#define kNtErrorDsDraSourceIsPartialReplica 8465
+#define kNtErrorDsDraExtnConnectionFailed 8466
+#define kNtErrorDsInstallSchemaMismatch 8467
+#define kNtErrorDsDupLinkId 8468
+#define kNtErrorDsNameErrorResolving 8469
+#define kNtErrorDsNameErrorNotFound 8470
+#define kNtErrorDsNameErrorNotUnique 8471
+#define kNtErrorDsNameErrorNoMapping 8472
+#define kNtErrorDsNameErrorDomainOnly 8473
+#define kNtErrorDsNameErrorNoSyntacticalMapping 8474
+#define kNtErrorDsConstructedAttMod 8475
+#define kNtErrorDsWrongOmObjClass 8476
+#define kNtErrorDsDraReplPending 8477
+#define kNtErrorDsDsRequired 8478
+#define kNtErrorDsInvalidLdapDisplayName 8479
+#define kNtErrorDsNonBaseSearch 8480
+#define kNtErrorDsCantRetrieveAtts 8481
+#define kNtErrorDsBacklinkWithoutLink 8482
+#define kNtErrorDsEpochMismatch 8483
+#define kNtErrorDsSrcNameMismatch 8484
+#define kNtErrorDsSrcAndDstNcIdentical 8485
+#define kNtErrorDsDstNcMismatch 8486
+#define kNtErrorDsNotAuthoritiveForDstNc 8487
+#define kNtErrorDsSrcGuidMismatch 8488
+#define kNtErrorDsCantMoveDeletedObject 8489
+#define kNtErrorDsPdcOperationInProgress 8490
+#define kNtErrorDsCrossDomainCleanupReqd 8491
+#define kNtErrorDsIllegalXdomMoveOperation 8492
+#define kNtErrorDsCantWithAcctGroupMembershps 8493
+#define kNtErrorDsNcMustHaveNcParent 8494
+#define kNtErrorDsCrImpossibleToValidate 8495
+#define kNtErrorDsDstDomainNotNative 8496
+#define kNtErrorDsMissingInfrastructureContainer 8497
+#define kNtErrorDsCantMoveAccountGroup 8498
+#define kNtErrorDsCantMoveResourceGroup 8499
+#define kNtErrorDsInvalidSearchFlag 8500
+#define kNtErrorDsNoTreeDeleteAboveNc 8501
+#define kNtErrorDsCouldntLockTreeForDelete 8502
+#define kNtErrorDsCouldntIdentifyObjectsForTreeDelete 8503
+#define kNtErrorDsSamInitFailure 8504
+#define kNtErrorDsSensitiveGroupViolation 8505
+#define kNtErrorDsCantModPrimarygroupid 8506
+#define kNtErrorDsIllegalBaseSchemaMod 8507
+#define kNtErrorDsNonsafeSchemaChange 8508
+#define kNtErrorDsSchemaUpdateDisallowed 8509
+#define kNtErrorDsCantCreateUnderSchema 8510
+#define kNtErrorDsInstallNoSrcSchVersion 8511
+#define kNtErrorDsInstallNoSchVersionInInifile 8512
+#define kNtErrorDsInvalidGroupType 8513
+#define kNtErrorDsNoNestGlobalgroupInMixeddomain 8514
+#define kNtErrorDsNoNestLocalgroupInMixeddomain 8515
+#define kNtErrorDsGlobalCantHaveLocalMember 8516
+#define kNtErrorDsGlobalCantHaveUniversalMember 8517
+#define kNtErrorDsUniversalCantHaveLocalMember 8518
+#define kNtErrorDsGlobalCantHaveCrossdomainMember 8519
+#define kNtErrorDsLocalCantHaveCrossdomainLocalMember 8520
+#define kNtErrorDsHavePrimaryMembers 8521
+#define kNtErrorDsStringSdConversionFailed 8522
+#define kNtErrorDsNamingMasterGc 8523
+#define kNtErrorDsDnsLookupFailure 8524
+#define kNtErrorDsCouldntUpdateSpns 8525
+#define kNtErrorDsCantRetrieveSd 8526
+#define kNtErrorDsKeyNotUnique 8527
+#define kNtErrorDsWrongLinkedAttSyntax 8528
+#define kNtErrorDsSamNeedBootkeyPassword 8529
+#define kNtErrorDsSamNeedBootkeyFloppy 8530
+#define kNtErrorDsCantStart 8531
+#define kNtErrorDsInitFailure 8532
+#define kNtErrorDsNoPktPrivacyOnConnection 8533
+#define kNtErrorDsSourceDomainInForest 8534
+#define kNtErrorDsDestinationDomainNotInForest 8535
+#define kNtErrorDsDestinationAuditingNotEnabled 8536
+#define kNtErrorDsCantFindDcForSrcDomain 8537
+#define kNtErrorDsSrcObjNotGroupOrUser 8538
+#define kNtErrorDsSrcSidExistsInForest 8539
+#define kNtErrorDsSrcAndDstObjectClassMismatch 8540
+#define kNtErrorSamInitFailure 8541
+#define kNtErrorDsDraSchemaInfoShip 8542
+#define kNtErrorDsDraSchemaConflict 8543
+#define kNtErrorDsDraEarlierSchemaConflict 8544
+#define kNtErrorDsDraObjNcMismatch 8545
+#define kNtErrorDsNcStillHasDsas 8546
+#define kNtErrorDsGcRequired 8547
+#define kNtErrorDsLocalMemberOfLocalOnly 8548
+#define kNtErrorDsNoFpoInUniversalGroups 8549
+#define kNtErrorDsCantAddToGc 8550
+#define kNtErrorDsNoCheckpointWithPdc 8551
+#define kNtErrorDsSourceAuditingNotEnabled 8552
+#define kNtErrorDsCantCreateInNondomainNc 8553
+#define kNtErrorDsInvalidNameForSpn 8554
+#define kNtErrorDsFilterUsesContructedAttrs 8555
+#define kNtErrorDsUnicodepwdNotInQuotes 8556
+#define kNtErrorDsMachineAccountQuotaExceeded 8557
+#define kNtErrorDsMustBeRunOnDstDc 8558
+#define kNtErrorDsSrcDcMustBeSp4OrGreater 8559
+#define kNtErrorDsCantTreeDeleteCriticalObj 8560
+#define kNtErrorDsInitFailureConsole 8561
+#define kNtErrorDsSamInitFailureConsole 8562
+#define kNtErrorDsForestVersionTooHigh 8563
+#define kNtErrorDsDomainVersionTooHigh 8564
+#define kNtErrorDsForestVersionTooLow 8565
+#define kNtErrorDsDomainVersionTooLow 8566
+#define kNtErrorDsIncompatibleVersion 8567
+#define kNtErrorDsLowDsaVersion 8568
+#define kNtErrorDsNoBehaviorVersionInMixeddomain 8569
+#define kNtErrorDsNotSupportedSortOrder 8570
+#define kNtErrorDsNameNotUnique 8571
+#define kNtErrorDsMachineAccountCreatedPrent4 8572
+#define kNtErrorDsOutOfVersionStore 8573
+#define kNtErrorDsIncompatibleControlsUsed 8574
+#define kNtErrorDsNoRefDomain 8575
+#define kNtErrorDsReservedLinkId 8576
+#define kNtErrorDsLinkIdNotAvailable 8577
+#define kNtErrorDsAgCantHaveUniversalMember 8578
+#define kNtErrorDsModifydnDisallowedByInstanceType 8579
+#define kNtErrorDsNoObjectMoveInSchemaNc 8580
+#define kNtErrorDsModifydnDisallowedByFlag 8581
+#define kNtErrorDsModifydnWrongGrandparent 8582
+#define kNtErrorDsNameErrorTrustReferral 8583
+#define kNtErrorNotSupportedOnStandardServer 8584
+#define kNtErrorDsCantAccessRemotePartOfAd 8585
+#define kNtErrorDsCrImpossibleToValidateV2 8586
+#define kNtErrorDsThreadLimitExceeded 8587
+#define kNtErrorDsNotClosest 8588
+#define kNtErrorDsCantDeriveSpnWithoutServerRef 8589
+#define kNtErrorDsSingleUserModeFailed 8590
+#define kNtErrorDsNtdscriptSyntaxError 8591
+#define kNtErrorDsNtdscriptProcessError 8592
+#define kNtErrorDsDifferentReplEpochs 8593
+#define kNtErrorDsDrsExtensionsChanged 8594
+#define kNtErrorDsReplicaSetChangeNotAllowedOnDisabledCr 8595
+#define kNtErrorDsNoMsdsIntid 8596
+#define kNtErrorDsDupMsdsIntid 8597
+#define kNtErrorDsExistsInRdnattid 8598
+#define kNtErrorDsAuthorizationFailed 8599
+#define kNtErrorDsInvalidScript 8600
+#define kNtErrorDsRemoteCrossrefOpFailed 8601
+#define kNtErrorDsCrossRefBusy 8602
+#define kNtErrorDsCantDeriveSpnForDeletedDomain 8603
+#define kNtErrorDsCantDemoteWithWriteableNc 8604
+#define kNtErrorDsDuplicateIdFound 8605
+#define kNtErrorDsInsufficientAttrToCreateObject 8606
+#define kNtErrorDsGroupConversionError 8607
+#define kNtErrorDsCantMoveAppBasicGroup 8608
+#define kNtErrorDsCantMoveAppQueryGroup 8609
+#define kNtErrorDsRoleNotVerified 8610
+#define kNtErrorDsWkoContainerCannotBeSpecial 8611
+#define kNtErrorDsDomainRenameInProgress 8612
+#define kNtErrorDsExistingAdChildNc 8613
+#define kNtErrorDsReplLifetimeExceeded 8614
+#define kNtErrorDsDisallowedInSystemContainer 8615
+#define kNtErrorDsLdapSendQueueFull 8616
+#define kNtErrorDsDraOutScheduleWindow 8617
+#define kNtErrorDsPolicyNotKnown 8618
+#define kNtErrorNoSiteSettingsObject 8619
+#define kNtErrorNoSecrets 8620
+#define kNtErrorNoWritableDcFound 8621
+#define kNtErrorDsNoServerObject 8622
+#define kNtErrorDsNoNtdsaObject 8623
+#define kNtErrorDsNonAsqSearch 8624
+#define kNtErrorDsAuditFailure 8625
+#define kNtErrorDsInvalidSearchFlagSubtree 8626
+#define kNtErrorDsInvalidSearchFlagTuple 8627
+#define kNtErrorDsHierarchyTableTooDeep 8628
+#define kNtErrorDsDraCorruptUtdVector 8629
+#define kNtErrorDsDraSecretsDenied 8630
+#define kNtErrorDsReservedMapiId 8631
+#define kNtErrorDsMapiIdNotAvailable 8632
+#define kNtErrorDsDraMissingKrbtgtSecret 8633
+#define kNtErrorDsDomainNameExistsInForest 8634
+#define kNtErrorDsFlatNameExistsInForest 8635
+#define kNtErrorInvalidUserPrincipalName 8636
+#define kNtErrorDsOidMappedGroupCantHaveMembers 8637
+#define kNtErrorDsOidNotFound 8638
+#define kNtErrorDsDraRecycledTarget 8639
+#define kNtErrorDsDisallowedNcRedirect 8640
+#define kNtErrorDsHighAdldsFfl 8641
+#define kNtErrorDsHighDsaVersion 8642
+#define kNtErrorDsLowAdldsFfl 8643
+#define kNtErrorDomainSidSameAsLocalWorkstation 8644
+#define kNtErrorDsUndeleteSamValidationFailed 8645
+#define kNtErrorIncorrectAccountType 8646
+#define kNtErrorDsSpnValueNotUniqueInForest 8647
+#define kNtErrorDsUpnValueNotUniqueInForest 8648
+#define kNtErrorDsMissingForestTrust 8649
+#define kNtErrorDsValueKeyNotUnique 8650
+#define kNtErrorIpsecQmPolicyExists 13000
+#define kNtErrorIpsecQmPolicyNotFound 13001
+#define kNtErrorIpsecQmPolicyInUse 13002
+#define kNtErrorIpsecMmPolicyExists 13003
+#define kNtErrorIpsecMmPolicyNotFound 13004
+#define kNtErrorIpsecMmPolicyInUse 13005
+#define kNtErrorIpsecMmFilterExists 13006
+#define kNtErrorIpsecMmFilterNotFound 13007
+#define kNtErrorIpsecTransportFilterExists 13008
+#define kNtErrorIpsecTransportFilterNotFound 13009
+#define kNtErrorIpsecMmAuthExists 13010
+#define kNtErrorIpsecMmAuthNotFound 13011
+#define kNtErrorIpsecMmAuthInUse 13012
+#define kNtErrorIpsecDefaultMmPolicyNotFound 13013
+#define kNtErrorIpsecDefaultMmAuthNotFound 13014
+#define kNtErrorIpsecDefaultQmPolicyNotFound 13015
+#define kNtErrorIpsecTunnelFilterExists 13016
+#define kNtErrorIpsecTunnelFilterNotFound 13017
+#define kNtErrorIpsecMmFilterPendingDeletion 13018
+#define kNtErrorIpsecTransportFilterPendingDeletion 13019
+#define kNtErrorIpsecTunnelFilterPendingDeletion 13020
+#define kNtErrorIpsecMmPolicyPendingDeletion 13021
+#define kNtErrorIpsecMmAuthPendingDeletion 13022
+#define kNtErrorIpsecQmPolicyPendingDeletion 13023
+#define kNtErrorIpsecIkeNegStatusBegin 13800
+#define kNtErrorIpsecIkeAuthFail 13801
+#define kNtErrorIpsecIkeAttribFail 13802
+#define kNtErrorIpsecIkeNegotiationPending 13803
+#define kNtErrorIpsecIkeGeneralProcessingError 13804
+#define kNtErrorIpsecIkeTimedOut 13805
+#define kNtErrorIpsecIkeNoCert 13806
+#define kNtErrorIpsecIkeSaDeleted 13807
+#define kNtErrorIpsecIkeSaReaped 13808
+#define kNtErrorIpsecIkeMmAcquireDrop 13809
+#define kNtErrorIpsecIkeQmAcquireDrop 13810
+#define kNtErrorIpsecIkeQueueDropMm 13811
+#define kNtErrorIpsecIkeQueueDropNoMm 13812
+#define kNtErrorIpsecIkeDropNoResponse 13813
+#define kNtErrorIpsecIkeMmDelayDrop 13814
+#define kNtErrorIpsecIkeQmDelayDrop 13815
+#define kNtErrorIpsecIkeError 13816
+#define kNtErrorIpsecIkeCrlFailed 13817
+#define kNtErrorIpsecIkeInvalidKeyUsage 13818
+#define kNtErrorIpsecIkeInvalidCertType 13819
+#define kNtErrorIpsecIkeNoPrivateKey 13820
+#define kNtErrorIpsecIkeSimultaneousRekey 13821
+#define kNtErrorIpsecIkeDhFail 13822
+#define kNtErrorIpsecIkeCriticalPayloadNotRecognized 13823
+#define kNtErrorIpsecIkeInvalidHeader 13824
+#define kNtErrorIpsecIkeNoPolicy 13825
+#define kNtErrorIpsecIkeInvalidSignature 13826
+#define kNtErrorIpsecIkeKerberosError 13827
+#define kNtErrorIpsecIkeNoPublicKey 13828
+#define kNtErrorIpsecIkeProcessErr 13829
+#define kNtErrorIpsecIkeProcessErrSa 13830
+#define kNtErrorIpsecIkeProcessErrProp 13831
+#define kNtErrorIpsecIkeProcessErrTrans 13832
+#define kNtErrorIpsecIkeProcessErrKe 13833
+#define kNtErrorIpsecIkeProcessErrId 13834
+#define kNtErrorIpsecIkeProcessErrCert 13835
+#define kNtErrorIpsecIkeProcessErrCertReq 13836
+#define kNtErrorIpsecIkeProcessErrHash 13837
+#define kNtErrorIpsecIkeProcessErrSig 13838
+#define kNtErrorIpsecIkeProcessErrNonce 13839
+#define kNtErrorIpsecIkeProcessErrNotify 13840
+#define kNtErrorIpsecIkeProcessErrDelete 13841
+#define kNtErrorIpsecIkeProcessErrVendor 13842
+#define kNtErrorIpsecIkeInvalidPayload 13843
+#define kNtErrorIpsecIkeLoadSoftSa 13844
+#define kNtErrorIpsecIkeSoftSaTornDown 13845
+#define kNtErrorIpsecIkeInvalidCookie 13846
+#define kNtErrorIpsecIkeNoPeerCert 13847
+#define kNtErrorIpsecIkePeerCrlFailed 13848
+#define kNtErrorIpsecIkePolicyChange 13849
+#define kNtErrorIpsecIkeNoMmPolicy 13850
+#define kNtErrorIpsecIkeNotcbpriv 13851
+#define kNtErrorIpsecIkeSecloadfail 13852
+#define kNtErrorIpsecIkeFailsspinit 13853
+#define kNtErrorIpsecIkeFailqueryssp 13854
+#define kNtErrorIpsecIkeSrvacqfail 13855
+#define kNtErrorIpsecIkeSrvquerycred 13856
+#define kNtErrorIpsecIkeGetspifail 13857
+#define kNtErrorIpsecIkeInvalidFilter 13858
+#define kNtErrorIpsecIkeOutOfMemory 13859
+#define kNtErrorIpsecIkeAddUpdateKeyFailed 13860
+#define kNtErrorIpsecIkeInvalidPolicy 13861
+#define kNtErrorIpsecIkeUnknownDoi 13862
+#define kNtErrorIpsecIkeInvalidSituation 13863
+#define kNtErrorIpsecIkeDhFailure 13864
+#define kNtErrorIpsecIkeInvalidGroup 13865
+#define kNtErrorIpsecIkeEncrypt 13866
+#define kNtErrorIpsecIkeDecrypt 13867
+#define kNtErrorIpsecIkePolicyMatch 13868
+#define kNtErrorIpsecIkeUnsupportedId 13869
+#define kNtErrorIpsecIkeInvalidHash 13870
+#define kNtErrorIpsecIkeInvalidHashAlg 13871
+#define kNtErrorIpsecIkeInvalidHashSize 13872
+#define kNtErrorIpsecIkeInvalidEncryptAlg 13873
+#define kNtErrorIpsecIkeInvalidAuthAlg 13874
+#define kNtErrorIpsecIkeInvalidSig 13875
+#define kNtErrorIpsecIkeLoadFailed 13876
+#define kNtErrorIpsecIkeRpcDelete 13877
+#define kNtErrorIpsecIkeBenignReinit 13878
+#define kNtErrorIpsecIkeInvalidResponderLifetimeNotify 13879
+#define kNtErrorIpsecIkeInvalidMajorVersion 13880
+#define kNtErrorIpsecIkeInvalidCertKeylen 13881
+#define kNtErrorIpsecIkeMmLimit 13882
+#define kNtErrorIpsecIkeNegotiationDisabled 13883
+#define kNtErrorIpsecIkeQmLimit 13884
+#define kNtErrorIpsecIkeMmExpired 13885
+#define kNtErrorIpsecIkePeerMmAssumedInvalid 13886
+#define kNtErrorIpsecIkeCertChainPolicyMismatch 13887
+#define kNtErrorIpsecIkeUnexpectedMessageId 13888
+#define kNtErrorIpsecIkeInvalidAuthPayload 13889
+#define kNtErrorIpsecIkeDosCookieSent 13890
+#define kNtErrorIpsecIkeShuttingDown 13891
+#define kNtErrorIpsecIkeCgaAuthFailed 13892
+#define kNtErrorIpsecIkeProcessErrNatoa 13893
+#define kNtErrorIpsecIkeInvalidMmForQm 13894
+#define kNtErrorIpsecIkeQmExpired 13895
+#define kNtErrorIpsecIkeTooManyFilters 13896
+#define kNtErrorIpsecIkeNegStatusEnd 13897
+#define kNtErrorIpsecIkeKillDummyNapTunnel 13898
+#define kNtErrorIpsecIkeInnerIpAssignmentFailure 13899
+#define kNtErrorIpsecIkeRequireCpPayloadMissing 13900
+#define kNtErrorIpsecKeyModuleImpersonationNegotiationPending 13901
+#define kNtErrorIpsecIkeCoexistenceSuppress 13902
+#define kNtErrorIpsecIkeRatelimitDrop 13903
+#define kNtErrorIpsecIkePeerDoesntSupportMobike 13904
+#define kNtErrorIpsecIkeAuthorizationFailure 13905
+#define kNtErrorIpsecIkeStrongCredAuthorizationFailure 13906
+#define kNtErrorIpsecIkeAuthorizationFailureWithOptionalRetry 13907
+#define kNtErrorIpsecIkeStrongCredAuthorizationAndCertmapFailure 13908
+#define kNtErrorIpsecIkeNegStatusExtendedEnd 13909
+#define kNtErrorIpsecBadSpi 13910
+#define kNtErrorIpsecSaLifetimeExpired 13911
+#define kNtErrorIpsecWrongSa 13912
+#define kNtErrorIpsecReplayCheckFailed 13913
+#define kNtErrorIpsecInvalidPacket 13914
+#define kNtErrorIpsecIntegrityCheckFailed 13915
+#define kNtErrorIpsecClearTextDrop 13916
+#define kNtErrorIpsecAuthFirewallDrop 13917
+#define kNtErrorIpsecThrottleDrop 13918
+#define kNtErrorIpsecDospBlock 13925
+#define kNtErrorIpsecDospReceivedMulticast 13926
+#define kNtErrorIpsecDospInvalidPacket 13927
+#define kNtErrorIpsecDospStateLookupFailed 13928
+#define kNtErrorIpsecDospMaxEntries 13929
+#define kNtErrorIpsecDospKeymodNotAllowed 13930
+#define kNtErrorIpsecDospNotInstalled 13931
+#define kNtErrorIpsecDospMaxPerIpRatelimitQueues 13932
+#define kNtErrorSxsSectionNotFound 14000
+#define kNtErrorSxsCantGenActctx 14001
+#define kNtErrorSxsInvalidActctxdataFormat 14002
+#define kNtErrorSxsAssemblyNotFound 14003
+#define kNtErrorSxsManifestFormatError 14004
+#define kNtErrorSxsManifestParseError 14005
+#define kNtErrorSxsActivationContextDisabled 14006
+#define kNtErrorSxsKeyNotFound 14007
+#define kNtErrorSxsVersionConflict 14008
+#define kNtErrorSxsWrongSectionType 14009
+#define kNtErrorSxsThreadQueriesDisabled 14010
+#define kNtErrorSxsProcessDefaultAlreadySet 14011
+#define kNtErrorSxsUnknownEncodingGroup 14012
+#define kNtErrorSxsUnknownEncoding 14013
+#define kNtErrorSxsInvalidXmlNamespaceUri 14014
+#define kNtErrorSxsRootManifestDependencyNotInstalled 14015
+#define kNtErrorSxsLeafManifestDependencyNotInstalled 14016
+#define kNtErrorSxsInvalidAssemblyIdentityAttribute 14017
+#define kNtErrorSxsManifestMissingRequiredDefaultNamespace 14018
+#define kNtErrorSxsManifestInvalidRequiredDefaultNamespace 14019
+#define kNtErrorSxsPrivateManifestCrossPathWithReparsePoint 14020
+#define kNtErrorSxsDuplicateDllName 14021
+#define kNtErrorSxsDuplicateWindowclassName 14022
+#define kNtErrorSxsDuplicateClsid 14023
+#define kNtErrorSxsDuplicateIid 14024
+#define kNtErrorSxsDuplicateTlbid 14025
+#define kNtErrorSxsDuplicateProgid 14026
+#define kNtErrorSxsDuplicateAssemblyName 14027
+#define kNtErrorSxsFileHashMismatch 14028
+#define kNtErrorSxsPolicyParseError 14029
+#define kNtErrorSxsXmlEMissingquote 14030
+#define kNtErrorSxsXmlECommentsyntax 14031
+#define kNtErrorSxsXmlEBadstartnamechar 14032
+#define kNtErrorSxsXmlEBadnamechar 14033
+#define kNtErrorSxsXmlEBadcharinstring 14034
+#define kNtErrorSxsXmlEXmldeclsyntax 14035
+#define kNtErrorSxsXmlEBadchardata 14036
+#define kNtErrorSxsXmlEMissingwhitespace 14037
+#define kNtErrorSxsXmlEExpectingtagend 14038
+#define kNtErrorSxsXmlEMissingsemicolon 14039
+#define kNtErrorSxsXmlEUnbalancedparen 14040
+#define kNtErrorSxsXmlEInternalerror 14041
+#define kNtErrorSxsXmlEUnexpectedWhitespace 14042
+#define kNtErrorSxsXmlEIncompleteEncoding 14043
+#define kNtErrorSxsXmlEMissingParen 14044
+#define kNtErrorSxsXmlEExpectingclosequote 14045
+#define kNtErrorSxsXmlEMultipleColons 14046
+#define kNtErrorSxsXmlEInvalidDecimal 14047
+#define kNtErrorSxsXmlEInvalidHexidecimal 14048
+#define kNtErrorSxsXmlEInvalidUnicode 14049
+#define kNtErrorSxsXmlEWhitespaceorquestionmark 14050
+#define kNtErrorSxsXmlEUnexpectedendtag 14051
+#define kNtErrorSxsXmlEUnclosedtag 14052
+#define kNtErrorSxsXmlEDuplicateattribute 14053
+#define kNtErrorSxsXmlEMultipleroots 14054
+#define kNtErrorSxsXmlEInvalidatrootlevel 14055
+#define kNtErrorSxsXmlEBadxmldecl 14056
+#define kNtErrorSxsXmlEMissingroot 14057
+#define kNtErrorSxsXmlEUnexpectedeof 14058
+#define kNtErrorSxsXmlEBadperefinsubset 14059
+#define kNtErrorSxsXmlEUnclosedstarttag 14060
+#define kNtErrorSxsXmlEUnclosedendtag 14061
+#define kNtErrorSxsXmlEUnclosedstring 14062
+#define kNtErrorSxsXmlEUnclosedcomment 14063
+#define kNtErrorSxsXmlEUncloseddecl 14064
+#define kNtErrorSxsXmlEUnclosedcdata 14065
+#define kNtErrorSxsXmlEReservednamespace 14066
+#define kNtErrorSxsXmlEInvalidencoding 14067
+#define kNtErrorSxsXmlEInvalidswitch 14068
+#define kNtErrorSxsXmlEBadxmlcase 14069
+#define kNtErrorSxsXmlEInvalidStandalone 14070
+#define kNtErrorSxsXmlEUnexpectedStandalone 14071
+#define kNtErrorSxsXmlEInvalidVersion 14072
+#define kNtErrorSxsXmlEMissingequals 14073
+#define kNtErrorSxsProtectionRecoveryFailed 14074
+#define kNtErrorSxsProtectionPublicKeyTooShort 14075
+#define kNtErrorSxsProtectionCatalogNotValid 14076
+#define kNtErrorSxsUntranslatableHresult 14077
+#define kNtErrorSxsProtectionCatalogFileMissing 14078
+#define kNtErrorSxsMissingAssemblyIdentityAttribute 14079
+#define kNtErrorSxsInvalidAssemblyIdentityAttributeName 14080
+#define kNtErrorSxsAssemblyMissing 14081
+#define kNtErrorSxsCorruptActivationStack 14082
+#define kNtErrorSxsCorruption 14083
+#define kNtErrorSxsEarlyDeactivation 14084
+#define kNtErrorSxsInvalidDeactivation 14085
+#define kNtErrorSxsMultipleDeactivation 14086
+#define kNtErrorSxsProcessTerminationRequested 14087
+#define kNtErrorSxsReleaseActivationContext 14088
+#define kNtErrorSxsSystemDefaultActivationContextEmpty 14089
+#define kNtErrorSxsInvalidIdentityAttributeValue 14090
+#define kNtErrorSxsInvalidIdentityAttributeName 14091
+#define kNtErrorSxsIdentityDuplicateAttribute 14092
+#define kNtErrorSxsIdentityParseError 14093
+#define kNtErrorMalformedSubstitutionString 14094
+#define kNtErrorSxsIncorrectPublicKeyToken 14095
+#define kNtErrorUnmappedSubstitutionString 14096
+#define kNtErrorSxsAssemblyNotLocked 14097
+#define kNtErrorSxsComponentStoreCorrupt 14098
+#define kNtErrorAdvancedInstallerFailed 14099
+#define kNtErrorXmlEncodingMismatch 14100
+#define kNtErrorSxsManifestIdentitySameButContentsDifferent 14101
+#define kNtErrorSxsIdentitiesDifferent 14102
+#define kNtErrorSxsAssemblyIsNotADeployment 14103
+#define kNtErrorSxsFileNotPartOfAssembly 14104
+#define kNtErrorSxsManifestTooBig 14105
+#define kNtErrorSxsSettingNotRegistered 14106
+#define kNtErrorSxsTransactionClosureIncomplete 14107
+#define kNtErrorSmiPrimitiveInstallerFailed 14108
+#define kNtErrorGenericCommandFailed 14109
+#define kNtErrorSxsFileHashMissing 14110
+#define kNtErrorEvtInvalidChannelPath 15000
+#define kNtErrorEvtInvalidQuery 15001
+#define kNtErrorEvtPublisherMetadataNotFound 15002
+#define kNtErrorEvtEventTemplateNotFound 15003
+#define kNtErrorEvtInvalidPublisherName 15004
+#define kNtErrorEvtInvalidEventData 15005
+#define kNtErrorEvtChannelNotFound 15007
+#define kNtErrorEvtMalformedXmlText 15008
+#define kNtErrorEvtSubscriptionToDirectChannel 15009
+#define kNtErrorEvtConfigurationError 15010
+#define kNtErrorEvtQueryResultStale 15011
+#define kNtErrorEvtQueryResultInvalidPosition 15012
+#define kNtErrorEvtNonValidatingMsxml 15013
+#define kNtErrorEvtFilterAlreadyscoped 15014
+#define kNtErrorEvtFilterNoteltset 15015
+#define kNtErrorEvtFilterInvarg 15016
+#define kNtErrorEvtFilterInvtest 15017
+#define kNtErrorEvtFilterInvtype 15018
+#define kNtErrorEvtFilterParseerr 15019
+#define kNtErrorEvtFilterUnsupportedop 15020
+#define kNtErrorEvtFilterUnexpectedtoken 15021
+#define kNtErrorEvtInvalidOperationOverEnabledDirectChannel 15022
+#define kNtErrorEvtInvalidChannelPropertyValue 15023
+#define kNtErrorEvtInvalidPublisherPropertyValue 15024
+#define kNtErrorEvtChannelCannotActivate 15025
+#define kNtErrorEvtFilterTooComplex 15026
+#define kNtErrorEvtMessageNotFound 15027
+#define kNtErrorEvtMessageIdNotFound 15028
+#define kNtErrorEvtUnresolvedValueInsert 15029
+#define kNtErrorEvtUnresolvedParameterInsert 15030
+#define kNtErrorEvtMaxInsertsReached 15031
+#define kNtErrorEvtEventDefinitionNotFound 15032
+#define kNtErrorEvtMessageLocaleNotFound 15033
+#define kNtErrorEvtVersionTooOld 15034
+#define kNtErrorEvtVersionTooNew 15035
+#define kNtErrorEvtCannotOpenChannelOfQuery 15036
+#define kNtErrorEvtPublisherDisabled 15037
+#define kNtErrorEvtFilterOutOfRange 15038
+#define kNtErrorEcSubscriptionCannotActivate 15080
+#define kNtErrorEcLogDisabled 15081
+#define kNtErrorEcCircularForwarding 15082
+#define kNtErrorEcCredstoreFull 15083
+#define kNtErrorEcCredNotFound 15084
+#define kNtErrorEcNoActiveChannel 15085
+#define kNtErrorMuiFileNotFound 15100
+#define kNtErrorMuiInvalidFile 15101
+#define kNtErrorMuiInvalidRcConfig 15102
+#define kNtErrorMuiInvalidLocaleName 15103
+#define kNtErrorMuiInvalidUltimatefallbackName 15104
+#define kNtErrorMuiFileNotLoaded 15105
+#define kNtErrorResourceEnumUserStop 15106
+#define kNtErrorMuiIntlsettingsUilangNotInstalled 15107
+#define kNtErrorMuiIntlsettingsInvalidLocaleName 15108
+#define kNtErrorMrmRuntimeNoDefaultOrNeutralResource 15110
+#define kNtErrorMrmInvalidPriconfig 15111
+#define kNtErrorMrmInvalidFileType 15112
+#define kNtErrorMrmUnknownQualifier 15113
+#define kNtErrorMrmInvalidQualifierValue 15114
+#define kNtErrorMrmNoCandidate 15115
+#define kNtErrorMrmNoMatchOrDefaultCandidate 15116
+#define kNtErrorMrmResourceTypeMismatch 15117
+#define kNtErrorMrmDuplicateMapName 15118
+#define kNtErrorMrmDuplicateEntry 15119
+#define kNtErrorMrmInvalidResourceIdentifier 15120
+#define kNtErrorMrmFilepathTooLong 15121
+#define kNtErrorMrmUnsupportedDirectoryType 15122
+#define kNtErrorMrmInvalidPriFile 15126
+#define kNtErrorMrmNamedResourceNotFound 15127
+#define kNtErrorMrmMapNotFound 15135
+#define kNtErrorMrmUnsupportedProfileType 15136
+#define kNtErrorMrmInvalidQualifierOperator 15137
+#define kNtErrorMrmIndeterminateQualifierValue 15138
+#define kNtErrorMrmAutomergeEnabled 15139
+#define kNtErrorMrmTooManyResources 15140
+#define kNtErrorMrmUnsupportedFileTypeForMerge 15141
+#define kNtErrorMrmUnsupportedFileTypeForLoadUnloadPriFile 15142
+#define kNtErrorMrmNoCurrentViewOnThread 15143
+#define kNtErrorDifferentProfileResourceManagerExist 15144
+#define kNtErrorOperationNotAllowedFromSystemComponent 15145
+#define kNtErrorMrmDirectRefToNonDefaultResource 15146
+#define kNtErrorMrmGenerationCountMismatch 15147
+#define kNtErrorPriMergeVersionMismatch 15148
+#define kNtErrorPriMergeMissingSchema 15149
+#define kNtErrorPriMergeLoadFileFailed 15150
+#define kNtErrorPriMergeAddFileFailed 15151
+#define kNtErrorPriMergeWriteFileFailed 15152
+#define kNtErrorPriMergeMultiplePackageFamiliesNotAllowed 15153
+#define kNtErrorPriMergeMultipleMainPackagesNotAllowed 15154
+#define kNtErrorPriMergeBundlePackagesNotAllowed 15155
+#define kNtErrorPriMergeMainPackageRequired 15156
+#define kNtErrorPriMergeResourcePackageRequired 15157
+#define kNtErrorPriMergeInvalidFileName 15158
+#define kNtErrorMcaInvalidCapabilitiesString 15200
+#define kNtErrorMcaInvalidVcpVersion 15201
+#define kNtErrorMcaMonitorViolatesMccsSpecification 15202
+#define kNtErrorMcaMccsVersionMismatch 15203
+#define kNtErrorMcaUnsupportedMccsVersion 15204
+#define kNtErrorMcaInternalError 15205
+#define kNtErrorMcaInvalidTechnologyTypeReturned 15206
+#define kNtErrorMcaUnsupportedColorTemperature 15207
+#define kNtErrorAmbiguousSystemDevice 15250
+#define kNtErrorSystemDeviceNotFound 15299
+#define kNtErrorHashNotSupported 15300
+#define kNtErrorHashNotPresent 15301
+#define kNtErrorSecondaryIcProviderNotRegistered 15321
+#define kNtErrorGpioClientInformationInvalid 15322
+#define kNtErrorGpioVersionNotSupported 15323
+#define kNtErrorGpioInvalidRegistrationPacket 15324
+#define kNtErrorGpioOperationDenied 15325
+#define kNtErrorGpioIncompatibleConnectMode 15326
+#define kNtErrorGpioInterruptAlreadyUnmasked 15327
+#define kNtErrorCannotSwitchRunlevel 15400
+#define kNtErrorInvalidRunlevelSetting 15401
+#define kNtErrorRunlevelSwitchTimeout 15402
+#define kNtErrorRunlevelSwitchAgentTimeout 15403
+#define kNtErrorRunlevelSwitchInProgress 15404
+#define kNtErrorServicesFailedAutostart 15405
+#define kNtErrorComTaskStopPending 15501
+#define kNtErrorInstallOpenPackageFailed 15600
+#define kNtErrorInstallPackageNotFound 15601
+#define kNtErrorInstallInvalidPackage 15602
+#define kNtErrorInstallResolveDependencyFailed 15603
+#define kNtErrorInstallOutOfDiskSpace 15604
+#define kNtErrorInstallNetworkFailure 15605
+#define kNtErrorInstallRegistrationFailure 15606
+#define kNtErrorInstallDeregistrationFailure 15607
+#define kNtErrorInstallCancel 15608
+#define kNtErrorInstallFailed 15609
+#define kNtErrorRemoveFailed 15610
+#define kNtErrorPackageAlreadyExists 15611
+#define kNtErrorNeedsRemediation 15612
+#define kNtErrorInstallPrerequisiteFailed 15613
+#define kNtErrorPackageRepositoryCorrupted 15614
+#define kNtErrorInstallPolicyFailure 15615
+#define kNtErrorPackageUpdating 15616
+#define kNtErrorDeploymentBlockedByPolicy 15617
+#define kNtErrorPackagesInUse 15618
+#define kNtErrorRecoveryFileCorrupt 15619
+#define kNtErrorInvalidStagedSignature 15620
+#define kNtErrorDeletingExistingApplicationdataStoreFailed 15621
+#define kNtErrorInstallPackageDowngrade 15622
+#define kNtErrorSystemNeedsRemediation 15623
+#define kNtErrorAppxIntegrityFailureClrNgen 15624
+#define kNtErrorResiliencyFileCorrupt 15625
+#define kNtErrorInstallFirewallServiceNotRunning 15626
+#define kNtErrorPackageMoveFailed 15627
+#define kNtErrorInstallVolumeNotEmpty 15628
+#define kNtErrorInstallVolumeOffline 15629
+#define kNtErrorInstallVolumeCorrupt 15630
+#define kNtErrorNeedsRegistration 15631
+#define kNtErrorInstallWrongProcessorArchitecture 15632
+#define kNtErrorDevSideloadLimitExceeded 15633
+#define kNtErrorInstallOptionalPackageRequiresMainPackage 15634
+#define kNtErrorPackageNotSupportedOnFilesystem 15635
+#define kNtErrorPackageMoveBlockedByStreaming 15636
+#define kNtErrorInstallOptionalPackageApplicationidNotUnique 15637
+#define kNtErrorPackageStagingOnhold 15638
+#define kNtErrorInstallInvalidRelatedSetUpdate 15639
+#define kNtErrorPackagesReputationCheckFailed 15643
+#define kNtErrorPackagesReputationCheckTimedout 15644
+#define kNtErrorStateLoadStoreFailed 15800
+#define kNtErrorStateGetVersionFailed 15801
+#define kNtErrorStateSetVersionFailed 15802
+#define kNtErrorStateStructuredResetFailed 15803
+#define kNtErrorStateOpenContainerFailed 15804
+#define kNtErrorStateCreateContainerFailed 15805
+#define kNtErrorStateDeleteContainerFailed 15806
+#define kNtErrorStateReadSettingFailed 15807
+#define kNtErrorStateWriteSettingFailed 15808
+#define kNtErrorStateDeleteSettingFailed 15809
+#define kNtErrorStateQuerySettingFailed 15810
+#define kNtErrorStateReadCompositeSettingFailed 15811
+#define kNtErrorStateWriteCompositeSettingFailed 15812
+#define kNtErrorStateEnumerateContainerFailed 15813
+#define kNtErrorStateEnumerateSettingsFailed 15814
+#define kNtErrorStateCompositeSettingValueSizeLimitExceeded 15815
+#define kNtErrorStateSettingValueSizeLimitExceeded 15816
+#define kNtErrorStateSettingNameSizeLimitExceeded 15817
+#define kNtErrorStateContainerNameSizeLimitExceeded 15818
+#define kNtErrorApiUnavailable 15841
+
+#define kNtWaitIoCompletion 0xc0
+
+/* WinSock Error Codes: 10000-11999 */
+#define WSABASEERR 10000
+#define WSAEINTR 10004
+#define WSAEBADF 10009
+#define WSAEACCES 10013
+#define WSAEFAULT 10014
+#define WSAEINVAL 10022
+#define WSAEMFILE 10024
+#define WSAEWOULDBLOCK 10035
+#define WSAEINPROGRESS 10036
+#define WSAEALREADY 10037
+#define WSAENOTSOCK 10038
+#define WSAEDESTADDRREQ 10039
+#define WSAEMSGSIZE 10040
+#define WSAEPROTOTYPE 10041
+#define WSAENOPROTOOPT 10042
+#define WSAEPROTONOSUPPORT 10043
+#define WSAESOCKTNOSUPPORT 10044
+#define WSAEOPNOTSUPP 10045
+#define WSAEPFNOSUPPORT 10046
+#define WSAEAFNOSUPPORT 10047
+#define WSAEADDRINUSE 10048
+#define WSAEADDRNOTAVAIL 10049
+#define WSAENETDOWN 10050
+#define WSAENETUNREACH 10051
+#define WSAENETRESET 10052
+#define WSAECONNABORTED 10053
+#define WSAECONNRESET 10054
+#define WSAENOBUFS 10055
+#define WSAEISCONN 10056
+#define WSAENOTCONN 10057
+#define WSAESHUTDOWN 10058
+#define WSAETOOMANYREFS 10059
+#define WSAETIMEDOUT 10060
+#define WSAECONNREFUSED 10061
+#define WSAELOOP 10062
+#define WSAENAMETOOLONG 10063
+#define WSAEHOSTDOWN 10064
+#define WSAEHOSTUNREACH 10065
+#define WSAENOTEMPTY 10066
+#define WSAEPROCLIM 10067
+#define WSAEUSERS 10068
+#define WSAEDQUOT 10069
+#define WSAESTALE 10070
+#define WSAEREMOTE 10071
+#define WSASYSNOTREADY 10091
+#define WSAVERNOTSUPPORTED 10092
+#define WSANOTINITIALISED 10093
+#define WSAEDISCON 10101
+#define WSAENOMORE 10102
+#define WSAECANCELLED 10103
+#define WSAEINVALIDPROCTABLE 10104
+#define WSAEINVALIDPROVIDER 10105
+#define WSAEPROVIDERFAILEDINIT 10106
+#define WSASYSCALLFAILURE 10107
+#define WSASERVICE_NOT_FOUND 10108
+#define WSATYPE_NOT_FOUND 10109
+#define WSA_E_NO_MORE 10110
+#define WSA_E_CANCELLED 10111
+#define WSAEREFUSED 10112
+#define WSAHOST_NOT_FOUND 11001
+#define WSATRY_AGAIN 11002
+#define WSANO_RECOVERY 11003
+#define WSANO_DATA 11004
+#define WSA_QOS_RECEIVERS 11005
+#define WSA_QOS_SENDERS 11006
+#define WSA_QOS_NO_SENDERS 11007
+#define WSA_QOS_NO_RECEIVERS 11008
+#define WSA_QOS_REQUEST_CONFIRMED 11009
+#define WSA_QOS_ADMISSION_FAILURE 11010
+#define WSA_QOS_POLICY_FAILURE 11011
+#define WSA_QOS_BAD_STYLE 11012
+#define WSA_QOS_BAD_OBJECT 11013
+#define WSA_QOS_TRAFFIC_CTRL_ERROR 11014
+#define WSA_QOS_GENERIC_ERROR 11015
+#define WSA_QOS_ESERVICETYPE 11016
+#define WSA_QOS_EFLOWSPEC 11017
+#define WSA_QOS_EPROVSPECBUF 11018
+#define WSA_QOS_EFILTERSTYLE 11019
+#define WSA_QOS_EFILTERTYPE 11020
+#define WSA_QOS_EFILTERCOUNT 11021
+#define WSA_QOS_EOBJLENGTH 11022
+#define WSA_QOS_EFLOWCOUNT 11023
+#define WSA_QOS_EUNKOWNPSOBJ 11024
+#define WSA_QOS_EPOLICYOBJ 11025
+#define WSA_QOS_EFLOWDESC 11026
+#define WSA_QOS_EPSFLOWSPEC 11027
+#define WSA_QOS_EPSFILTERSPEC 11028
+#define WSA_QOS_ESDMODEOBJ 11029
+#define WSA_QOS_ESHAPERATEOBJ 11030
+#define WSA_QOS_RESERVED_PETYPE 11031
+#define WSA_SECURE_HOST_NOT_FOUND 11032
+#define WSA_IPSEC_NAME_POLICY_ERROR 11033
+
+#define WSA_WAIT_FAILED -1u
+#define WSA_WAIT_EVENT_0 0
+#define WSA_WAIT_IO_COMPLETION 0xc0
+#define WSA_WAIT_TIMEOUT 258
+#define WSA_MAXIMUM_WAIT_EVENTS 64
+#define WSA_IO_PENDING 997
+
+
+
+/*!BEGIN libc/nt/events.h */
+
+#define COSMOPOLITAN_LIBC_NT_EVENTS_H_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » events                                   ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int32_t GetMessage(struct NtMsg *lpMsg, int64_t hWnd, uint32_t wMsgFilterMin,
+                   uint32_t wMsgFilterMax);
+int32_t TranslateMessage(const struct NtMsg *lpMsg);
+intptr_t DispatchMessage(const struct NtMsg *lpMsg);
+void PostQuitMessage(int nExitCode);
+bool32 GetCursorPos(struct NtPoint *lpPoint);
+int64_t SendMessage(int64_t hWnd, uint32_t Msg, uint64_t wParam,
+                    int64_t lParam);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/files.h */
+
+#define COSMOPOLITAN_LIBC_NT_FILES_H_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » files                                    ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define kNtHandleFlagInherit          1 /* SetHandleInformation */
+#define kNtHandleFlagProtectFromClose 2
+
+#define kNtFindFirstExCaseSensitive 1
+#define kNtFindFirstExLargeFetch    2
+
+#define kNtDuplicateCloseSource 1
+#define kNtDuplicateSameAccess  2
+
+#define kNtSymbolicLinkFlagDirectory 1
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+intptr_t LoadResource(int64_t hModule, int64_t hResInfo);
+uint32_t SetHandleCount(uint32_t uNumber);
+uint32_t GetLogicalDrives(void);
+bool32 FlushFileBuffers(int64_t hFile);
+
+int64_t ReOpenFile(int64_t hOriginalFile, uint32_t dwDesiredAccess,
+                   uint32_t dwShareMode, uint32_t dwFlagsAndAttributes);
+
+bool32 DeleteFile(const char16_t *lpFileName) paramsnonnull();
+
+bool32 CopyFile(const char16_t *lpExistingFileName,
+                const char16_t *lpNewFileName, bool32 bFailIfExists)
+    paramsnonnull();
+
+bool32 MoveFile(const char16_t *lpExistingFileName,
+                const char16_t *lpNewFileName) paramsnonnull();
+bool32 MoveFileEx(const char16_t *lpExistingFileName,
+                  const char16_t *lpNewFileName, int dwFlags) paramsnonnull();
+
+bool32 SetCurrentDirectory(const char16_t *lpPathName);
+uint32_t GetCurrentDirectory(uint32_t nBufferLength, char16_t *out_lpBuffer);
+
+bool32 CreateDirectory(const char16_t *lpPathName,
+                       struct NtSecurityAttributes *lpSecurityAttributes);
+bool32 RemoveDirectory(const char16_t *lpPathName);
+
+bool32 DuplicateHandle(int64_t hSourceProcessHandle, int64_t hSourceHandle,
+                       int64_t hTargetProcessHandle, int64_t *lpTargetHandle,
+                       uint32_t dwDesiredAccess, bool32 bInheritHandle,
+                       uint32_t dwOptions);
+
+bool32 GetHandleInformation(int64_t hObject, uint32_t *out_lpdwFlags);
+bool32 SetHandleInformation(int64_t hObject, uint32_t dwMask, uint32_t dwFlags);
+int GetFileType(int64_t hFile);
+
+bool32 GetFileInformationByHandleEx(int64_t hFile,
+                                    uint32_t FileInformationClass,
+                                    void *out_lpFileInformation,
+                                    uint32_t dwBufferSize);
+
+bool32 GetFileInformationByHandle(
+    int64_t hFile, struct NtByHandleFileInformation *lpFileInformation);
+
+uint32_t GetFileAttributes(const char16_t *lpFileName);
+bool32 GetFileAttributesEx(
+    const char16_t *lpFileName, int fInfoLevelId /* kNtGetFileExInfoStandard */,
+    void *out_lpFileInformation /* → struct NtWin32FileAttributeData * */)
+    paramsnonnull();
+
+uint32_t GetCompressedFileSize(const char16_t *lpFileName,
+                               uint32_t *lpFileSizeHigh);
+bool32 SetFileAttributes(const char16_t *lpFileName, uint32_t dwFileAttributes);
+bool32 GetFileTime(int64_t hFile, struct NtFileTime *opt_lpCreationFileTime,
+                   struct NtFileTime *opt_lpLastAccessFileTime,
+                   struct NtFileTime *opt_lpLastWriteFileTime);
+bool32 SetFileTime(int64_t hFile,
+                   const struct NtFileTime *opt_lpCreationFileTime,
+                   const struct NtFileTime *opt_lpLastAccessFileTime,
+                   const struct NtFileTime *opt_lpLastWriteFileTime);
+
+bool32 DeviceIoControl(int64_t hDevice, uint32_t dwIoControlCode,
+                       void *lpInBuffer, uint32_t nInBufferSize,
+                       void *lpOutBuffer, uint32_t nOutBufferSize,
+                       uint32_t *lpBytesReturned,
+                       struct NtOverlapped *lpOverlapped);
+
+bool32 LockFile(int64_t hFile, uint32_t dwFileOffsetLow,
+                uint32_t dwFileOffsetHigh, uint32_t nNumberOfBytesToLockLow,
+                uint32_t nNumberOfBytesToLockHigh);
+bool32 LockFileEx(int64_t hFile, uint32_t dwFlags, uint32_t dwReserved,
+                  uint32_t nNumberOfBytesToLockLow,
+                  uint32_t nNumberOfBytesToLockHigh,
+                  struct NtOverlapped *lpOverlapped) paramsnonnull();
+bool32 UnlockFile(int64_t hFile, uint32_t dwFileOffsetLow,
+                  uint32_t dwFileOffsetHigh, uint32_t nNumberOfBytesToUnlockLow,
+                  uint32_t nNumberOfBytesToUnlockHigh);
+bool32 UnlockFileEx(int64_t hFile, uint32_t dwReserved,
+                    uint32_t nNumberOfBytesToUnlockLow,
+                    uint32_t nNumberOfBytesToUnlockHigh,
+                    struct NtOverlapped *lpOverlapped) paramsnonnull();
+
+bool32 CreateHardLink(const char16_t *lpFileName,
+                      const char16_t *lpExistingFileName,
+                      struct NtSecurityAttributes *reserved)
+    paramsnonnull((1, 2));
+bool32 CreateSymbolicLink(const char16_t *lpSymlinkFileName,
+                          const char16_t *lpTargetPathName, uint32_t dwFlags)
+    paramsnonnull();
+
+uint32_t SetFilePointer(int64_t hFile, int32_t lDistanceToMove,
+                        int32_t *optional_lpDistanceToMoveHigh,
+                        int dwMoveMethod);
+bool32 SetFilePointerEx(int64_t hFile, int64_t liDistanceToMove,
+                        int64_t *optional_lpNewFilePointer, int dwMoveMethod);
+
+bool32 SetEndOfFile(int64_t hFile);
+bool32 SetFileValidData(int64_t hFile, int64_t ValidDataLength);
+
+bool32 GetFileSecurity(const char16_t *lpFileName,
+                       uint32_t RequestedInformation,
+                       struct NtSecurityDescriptor *pSecurityDescriptor,
+                       uint32_t nLength, uint32_t *lpnLengthNeeded);
+
+bool32 OpenProcessToken(int64_t hProcessHandle, uint32_t dwDesiredAccess,
+                        int64_t *out_hTokenHandle);
+bool32 DuplicateToken(int64_t hExistingTokenHandle, int dwImpersonationLevel,
+                      int64_t *out_hDuplicateTokenHandle);
+bool32 DuplicateTokenEx(int64_t hExistingToken, unsigned int dwDesiredAccess,
+                        struct NtSecurityAttributes *lpTokenAttributes,
+                        int ImpersonationLevel, int TokenType,
+                        int64_t *out_phNewToken);
+
+bool32 AccessCheck(struct NtSecurityDescriptor *pSecurityDescriptor,
+                   int64_t ClientToken, unsigned int DesiredAccess,
+                   struct NtGenericMapping *lpGenericMapping,
+                   struct NtPrivilegeSet *lpPrivilegeSet,
+                   unsigned int *PrivilegeSetLength,
+                   unsigned int *GrantedAccess, bool32 *AccessStatus);
+
+void MapGenericMask(uint32_t *AccessMask,
+                    struct NtGenericMapping *GenericMapping);
+
+int64_t FindFirstFile(const char16_t *lpFileName,
+                      struct NtWin32FindData *out_lpFindFileData);
+int64_t FindFirstFileEx(const char16_t *lpFileName, int fInfoLevelId,
+                        void *out_lpFindFileData, int fSearchOp,
+                        void *reserved_lpSearchFilter,
+                        uint32_t dwAdditionalFlags);
+bool32 FindNextFile(int64_t hFindFile,
+                    struct NtWin32FindData *out_lpFindFileData);
+bool32 FindClose(int64_t inout_hFindFile);
+
+int64_t FindFirstVolume(char16_t *out_lpszVolumeName, uint32_t cchBufferLength);
+bool32 FindNextVolume(int64_t inout_hFindVolume, char16_t *out_lpszVolumeName,
+                      uint32_t cchBufferLength);
+bool32 FindVolumeClose(int64_t hFindVolume);
+
+bool32 ReadFileScatter(
+    int64_t hFileOpenedWithOverlappedAndNoBuffering,
+    const union NtFileSegmentElement
+        aNullTerminatedPageAlignedSizedSegmentArray[],
+    uint32_t nNumberOfBytesToReadThatsMultipleOfFileVolumeSectorSize,
+    uint32_t *lpReserved, struct NtOverlapped *inout_lpOverlapped)
+    paramsnonnull();
+
+bool32 WriteFileGather(int64_t hFileOpenedWithOverlappedAndNoBuffering,
+                       const union NtFileSegmentElement aSegmentArray[],
+                       uint32_t nNumberOfBytesToWrite, uint32_t *lpReserved,
+                       struct NtOverlapped inout_lpOverlapped) paramsnonnull();
+
+#define kNtFileNameNormalized 0x0
+#define kNtFileNameOpened     0x8
+#define kNtVolumeNameDos      0x0 /* e.g. \\?\C:\Users\jart */
+#define kNtVolumeNameGuid     0x1 /* e.g. \\?\Volume{ea38-etc.}\Users\jart */
+#define kNtVolumeNameNt       0x2 /* e.g. \Device\HarddiskVolume4\Users\jart */
+#define kNtVolumeNameNone     0x4 /* e.g. \Users\jart */
+uint32_t GetFinalPathNameByHandle(int64_t hFile, char16_t *out_path,
+                                  uint32_t arraylen, uint32_t flags);
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/thunk/files.inc */
+
+#define CopyFile(...) __imp_CopyFileW(__VA_ARGS__)
+extern typeof(CopyFile) *const __imp_CopyFileW __msabi;
+
+#define FlushFileBuffers(...) __imp_FlushFileBuffers(__VA_ARGS__)
+extern typeof(FlushFileBuffers) *const __imp_FlushFileBuffers __msabi;
+
+#define GetFileType(...) __imp_GetFileType(__VA_ARGS__)
+extern typeof(GetFileType) *const __imp_GetFileType __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/iocp.h */
+
+#define COSMOPOLITAN_LIBC_NT_IOCP_H_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » i/o completion ports                     ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define kNtFileSkipCompletionPortOnSuccess 1
+#define kNtFileSkipSetEventOnHandle        2
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+typedef void (*NtOverlappedCompletionRoutine)(
+    uint32_t dwErrorCode, uint32_t dwNumberOfBytesTransfered,
+    struct NtOverlapped *inout_lpOverlapped);
+
+int64_t CreateIoCompletionPort(int64_t FileHandleOrNeg1,
+                               int64_t opt_ExistingCompletionPortOrZero,
+                               void *StatePointer,
+                               uint32_t NumberOfConcurrentThreads);
+
+bool32 GetQueuedCompletionStatus(int64_t CompletionPort,
+                                 uint32_t *lpNumberOfBytesTransferred,
+                                 void *StatePointerPointer,
+                                 struct NtOverlapped **lpOverlapped,
+                                 uint32_t dwMilliseconds);
+
+bool32 GetQueuedCompletionStatusEx(
+    int64_t CompletionPort,
+    struct NtOverlappedEntry *out_lpCompletionPortEntries, uint32_t ulCount,
+    uint32_t *out_ulNumEntriesRemoved, uint32_t dwMilliseconds,
+    bool32 fAlertable);
+
+bool32 PostQueuedCompletionStatus(int64_t CompletionPort,
+                                  uint32_t dwNumberOfBytesTransferred,
+                                  uint32_t *dwCompletionKey,
+                                  struct NtOverlapped *opt_lpOverlapped);
+
+bool32 SetFileCompletionNotificationModes(int64_t FileHandle,
+                                          unsigned char Flags);
+
+bool32 ReadFileEx(int64_t hFile, void *lpBuffer, uint32_t nNumberOfBytesToRead,
+                  uint32_t *lpNumberOfBytesRead,
+                  struct NtOverlapped *opt_lpOverlapped,
+                  NtOverlappedCompletionRoutine lpCompletionRoutine);
+
+bool32 WriteFileEx(int64_t hFile, const void *lpBuffer,
+                   uint32_t nNumberOfBytesToWrite,
+                   struct NtOverlapped *lpOverlapped,
+                   NtOverlappedCompletionRoutine lpCompletionRoutine);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/ipc.h */
+
+#define COSMOPOLITAN_LIBC_NT_IPC_H_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » ipc                                      ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+/* CreateNamedPipe:dwOpenMode */
+#define kNtPipeAccessInbound  0x00000001
+#define kNtPipeAccessOutbound 0x00000002
+#define kNtPipeAccessDuplex   0x00000003
+
+/* CreateNamedPipe::dwPipeMode */
+#define kNtPipeWait                0x00000000
+#define kNtPipeNowait              0x00000001
+#define kNtPipeReadmodeByte        0x00000000
+#define kNtPipeReadmodeMessage     0x00000002
+#define kNtPipeTypeByte            0x00000000
+#define kNtPipeTypeMessage         0x00000004
+#define kNtPipeAcceptRemoteClients 0x00000000
+#define kNtPipeRejectRemoteClients 0x00000008
+
+/* CreateNamedPipe::nMaxInstances */
+#define NT_PIPE_UNLIMITED_INSTANCES 255
+
+/* CreateNamedPipeInfo */
+#define PIPE_CLIENT_END 0x00000000
+#define PIPE_SERVER_END 0x00000001
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+bool32 CreatePipe(int64_t *out_hReadPipe, int64_t *out_hWritePipe,
+                  const struct NtSecurityAttributes *opt_lpPipeAttributes,
+                  uint32_t nSize) paramsnonnull((1, 2));
+
+int64_t CreateNamedPipe(
+    const char16_t *lpName, uint32_t dwOpenMode, uint32_t dwPipeMode,
+    uint32_t nMaxInstances, uint32_t nOutBufferSize, uint32_t nInBufferSize,
+    uint32_t nDefaultTimeOut,
+    const struct NtSecurityAttributes *opt_lpSecurityAttributes)
+    paramsnonnull((1));
+
+bool32 CallNamedPipe(const char16_t *lpNamedPipeName, void *lpInBuffer,
+                     uint32_t nInBufferSize, void *lpOutBuffer,
+                     uint32_t nOutBufferSize, uint32_t *lpBytesRead,
+                     uint32_t nTimeOut);
+
+bool32 ConnectNamedPipe(int64_t *hNamedPipe, struct NtOverlapped *lpOverlapped);
+bool32 WaitNamedPipe(const char16_t *lpNamedPipeName, uint32_t nTimeOut);
+bool32 DisconnectNamedPipe(int64_t *hNamedPipe);
+
+bool32 SetNamedPipeHandleState(int64_t *hNamedPipe, uint32_t *lpMode,
+                               uint32_t *lpMaxCollectionCount,
+                               uint32_t *lpCollectDataTimeout);
+
+bool32 PeekNamedPipe(int64_t *hNamedPipe, void *lpBuffer, uint32_t nBufferSize,
+                     uint32_t *lpBytesRead, uint32_t *lpTotalBytesAvail,
+                     uint32_t *lpBytesLeftThisMessage);
+
+bool32 TransactNamedPipe(int64_t *hNamedPipe, void *lpInBuffer,
+                         uint32_t nInBufferSize, void *lpOutBuffer,
+                         uint32_t nOutBufferSize, uint32_t *lpBytesRead,
+                         struct NtOverlapped *lpOverlapped);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/memory.h */
+
+#define COSMOPOLITAN_LIBC_NT_MEMORY_H_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » memory                                   ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define kNtNumaNoPreferredNode 0xffffffffu
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int64_t CreateFileMappingNuma(
+    int64_t opt_hFile /* -1ul is MAP_ANONYMOUS */,
+    const struct NtSecurityAttributes *opt_lpFileMappingAttributes,
+    uint32_t flProtect, uint32_t dwMaximumSizeHigh, uint32_t dwMaximumSizeLow,
+    const char16_t *opt_lpName, uint32_t nndDesiredNumaNode);
+
+void *MapViewOfFileExNuma(
+    int64_t hFileMappingObject, /* @see CreateFileMapping() */
+    uint32_t dwDesiredAccess, uint32_t dwFileOffsetHigh, /* high order bits */
+    uint32_t dwFileOffsetLow,                            /* low order bits */
+    size_t dwNumberOfBytesToMap, void *opt_lpDesiredBaseAddress,
+    uint32_t nndDesiredNumaNode);
+
+bool32 UnmapViewOfFile(const void *lpBaseAddress);
+bool32 FlushViewOfFile(const void *lpBaseAddress,
+                       size_t dwNumberOfBytesToFlush);
+
+void *VirtualAlloc(void *opt_lpAddress, uint64_t dwSize,
+                   uint32_t flAllocationType, uint32_t flProtect);
+bool32 VirtualFree(void *lpAddress, uint64_t dwSize, uint32_t dwFreeType);
+bool32 VirtualProtect(void *lpAddress, uint64_t dwSize, uint32_t flNewProtect,
+                      uint32_t *lpflOldProtect) paramsnonnull();
+uint64_t VirtualQuery(const void *lpAddress,
+                      struct NtMemoryBasicInformation *lpBuffer,
+                      uint64_t dwLength);
+void *VirtualAllocEx(int64_t hProcess, void *lpAddress, uint64_t dwSize,
+                     uint32_t flAllocationType, uint32_t flProtect);
+
+bool32 PrefetchVirtualMemory(int64_t hProcess, const uint32_t *NumberOfEntries,
+                             struct NtMemoryRangeEntry *VirtualAddresses,
+                             uint32_t reserved_Flags);
+bool32 OfferVirtualMemory(void *inout_VirtualAddress, size_t Size,
+                          int Priority);
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/thunk/memory.inc */
+
+#define CreateFileMappingNuma(...) __imp_CreateFileMappingNumaW(__VA_ARGS__)
+#define MapViewOfFileExNuma(...)   __imp_MapViewOfFileExNuma(__VA_ARGS__)
+#define FlushViewOfFile(...)       __imp_FlushViewOfFile(__VA_ARGS__)
+#define UnmapViewOfFile(...)       __imp_UnmapViewOfFile(__VA_ARGS__)
+
+extern typeof(UnmapViewOfFile) *const __imp_UnmapViewOfFile __msabi;
+extern typeof(FlushViewOfFile) *const __imp_FlushViewOfFile __msabi;
+extern typeof(MapViewOfFileExNuma) *const __imp_MapViewOfFileExNuma __msabi;
+extern typeof(CreateFileMappingNuma) *const
+    __imp_CreateFileMappingNumaW __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/messagebox.h */
+
+#define COSMOPOLITAN_LIBC_NT_MESSAGEBOX_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int MessageBox(int64_t hWnd, const char16_t *lpText, const char16_t *lpCaption,
+               uint32_t mbType);
+int MessageBoxEx(int64_t hWnd, const char16_t *lpText,
+                 const char16_t *lpCaption, uint32_t mbType,
+                 uint16_t wLanguageId);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/ntdll.h */
+
+#define COSMOPOLITAN_LIBC_NT_NTDLL_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » beyond the pale                          ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+    “The functions and structures in [for these APIs] are internal to
+     the operating system and subject to change from one release of
+     Windows to the next, and possibly even between service packs for
+     each release.” ──Quoth MSDN */
+
+#define __nt_system_call_dispatcher (wambda *)0x7ffe0308
+
+extern const struct NtUnicodeString *const RtlNtdllName;
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § new technology » beyond the pale » eponymous runtime      ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define NT_PROCESS_FLAGS_CREATE_SUSPENDED 0x00000001
+#define NT_PROCESS_FLAGS_INHERIT_HANDLES  0x00000002
+#define NT_PROCESS_FLAGS_NO_SYNCHRONIZE   0x00000004
+#define NT_RTL_CLONE_PARENT               0
+#define NT_RTL_CLONE_CHILD                297
+
+NtStatus NtCallbackReturn(void *opt_Result, uint32_t ResultLength,
+                          int32_t Status);
+NtStatus NtTestAlert(void);
+
+NtStatus NtOpenFile(int64_t *out_FileHandle, uint32_t DesiredAccess,
+                    struct NtObjectAttributes *ObjectAttributes,
+                    struct NtIoStatusBlock *out_IoStatusBlock,
+                    uint32_t ShareAccess, uint32_t OpenOptions);
+
+NtStatus NtQueryInformationToken(int64_t TokenHandle,
+                                 uint32_t TokenInformationClass,
+                                 void *out_TokenInformation,
+                                 uint32_t TokenInformationLength,
+                                 uint32_t *out_ReturnLength);
+NtStatus NtYieldExecution(void);
+NtStatus NtQuerySystemInformation(uint32_t info_class, void *out_info,
+                                  uint32_t info_size,
+                                  uint32_t *out_bytes_received);
+NtStatus NtReadVirtualMemory(int64_t ProcessHandle, const void *BaseAddress,
+                             void *out_Buffer, size_t BufferLength,
+                             size_t *opt_out_ReturnLength);
+NtStatus NtCreateTimer(void **out_TimerHandle, uint32_t DesiredAccess,
+                       struct NtObjectAttributes *ObjectAttributes,
+                       uint32_t TimerType);
+NtStatus NtSetTimer(void *TimerHandle, int64_t *DueTime, void *TimerApcRoutine,
+                    void *TimerContext, int32_t Resume, int32_t Period,
+                    int32_t *out_PreviousState);
+NtStatus NtQueryObject(void *ObjectHandle, int ObjectInformationClass,
+                       void *out_ObjectInformation,
+                       uint32_t ObjectInformationLength,
+                       uint32_t *opt_out_ReturnLength);
+NtStatus NtQueryFullAttributesFile(
+    struct NtObjectAttributes *attributes,
+    struct NtFileNetworkOpenInformation *out_info);
+NtStatus NtCreateKey(void **out_KeyHandle, uint32_t DesiredAccess,
+                     struct NtObjectAttributes *ObjectAttributes,
+                     uint32_t TitleIndex, struct NtUnicodeString *opt_Class,
+                     uint32_t CreateOptions, uint32_t *opt_out_Disposition);
+NtStatus NtOpenKey(void **out_KeyHandle, uint32_t DesiredAccess,
+                   struct NtObjectAttributes *ObjectAttributes);
+NtStatus NtSetValueKey(void *KeyHandle, struct NtUnicodeString *ValueName,
+                       uint32_t opt_TitleIndex, uint32_t Type, void *Data,
+                       uint32_t DataSize);
+NtStatus NtDeleteKey(void *KeyHandle);
+NtStatus NtQueryValueKey(void *KeyHandle, struct NtUnicodeString *ValueName,
+                         int KeyValueInformationClass,
+                         void *out_KeyValueInformation, uint32_t Length,
+                         uint32_t *out_ResultLength);
+NtStatus NtFlushKey(void *KeyHandle);
+NtStatus NtEnumerateKey(int64_t hkey, uint32_t index, int info_class,
+                        void *out_key_info, uint32_t key_info_size,
+                        uint32_t *out_bytes_received);
+NtStatus NtEnumerateValueKey(int64_t hKey, uint32_t index, int info_class,
+                             void *out_key_info, uint32_t key_info_size,
+                             uint32_t *out_bytes_received);
+NtStatus NtQuerySystemTime(int64_t *SystemTime);
+NtStatus NtDeleteFile(struct NtObjectAttributes *ObjectAttributes);
+NtStatus NtFlushBuffersFile(int64_t FileHandle,
+                            struct NtIoStatusBlock *out_IoStatusBlock);
+NtStatus NtCreateIoCompletion(void **out_IoCompletionHandle,
+                              uint32_t DesiredAccess,
+                              struct NtObjectAttributes *ObjectAttributes,
+                              uint32_t NumberOfConcurrentThreads);
+NtStatus NtRaiseHardError(int32_t ErrorStatus, uint32_t NumberOfArguments,
+                          uint32_t UnicodeStringArgumentsMask, void *Arguments,
+                          uint32_t MessageBoxType,
+                          uint32_t *out_MessageBoxResult);
+NtStatus NtRaiseException(struct NtExceptionRecord *ExceptionRecord,
+                          struct NtContext *Context, int32_t SearchFrames);
+NtStatus NtCreateEvent(void **out_EventHandle, uint32_t DesiredAccess,
+                       struct NtObjectAttributes *ObjectAttributes,
+                       int EventType, int32_t InitialState);
+NtStatus NtWaitForSingleObject(void *ObjectHandle, int32_t Alertable,
+                               int64_t *TimeOut);
+NtStatus NtSetEvent(void *EventHandle, int32_t *opt_out_PreviousState);
+NtStatus NtClearEvent(void *EventHandle);
+NtStatus NtSignalAndWaitForSingleObject(void *ObjectToSignal,
+                                        void *WaitableObject, int32_t Alertable,
+                                        int64_t *opt_Time);
+NtStatus NtQueryPerformanceCounter(int64_t *out_PerformanceCount,
+                                   int64_t *opt_out_PerformanceFrequency);
+NtStatus NtFsControlFile(int64_t FileHandle, void *opt_Event,
+                         NtIoApcRoutine opt_ApcRoutine, void *opt_ApcContext,
+                         struct NtIoStatusBlock *out_IoStatusBlock,
+                         uint32_t FsControlCode, void *opt_InputBuffer,
+                         uint32_t InputBufferLength, void *opt_out_OutputBuffer,
+                         uint32_t OutputBufferLength);
+NtStatus NtCancelIoFile(int64_t FileHandle,
+                        struct NtIoStatusBlock *out_IoStatusBlock);
+NtStatus NtCreateProfile(void **out_ProfileHandle, int64_t ProcessHandle,
+                         void *Base, uint32_t Size, uint32_t BucketShift,
+                         uint32_t *Buffer, uint32_t BufferLength, int Source,
+                         uint32_t ProcessorMask);
+NtStatus NtSetIntervalProfile(uint32_t Interval, int Source);
+NtStatus NtQueryIntervalProfile(int Source, uint32_t *out_Interval);
+NtStatus NtStartProfile(void *ProfileHandle);
+NtStatus NtStopProfile(void *ProfileHandle);
+NtStatus NtCreateDirectoryObject(int64_t *out_DirectoryHandle,
+                                 uint32_t DesiredAccess,
+                                 struct NtObjectAttributes *ObjectAttributes);
+NtStatus NtOpenDirectoryObject(int64_t *out_DirectoryHandle,
+                               uint32_t DesiredAccess,
+                               struct NtObjectAttributes *ObjectAttributes);
+NtStatus NtOpenSymbolicLinkObject(int64_t *out_DirectoryHandle,
+                                  uint32_t DesiredAccess,
+                                  struct NtObjectAttributes *ObjectAttributes);
+NtStatus NtQuerySymbolicLinkObject(int64_t DirectoryHandle,
+                                   struct NtUnicodeString *inout_TargetName,
+                                   uint32_t *opt_out_ReturnLength);
+NtStatus ZwAreMappedFilesTheSame(void *Address1, void *Address2);
+NtStatus NtQueryVolumeInformationFile(int64_t FileHandle,
+                                      struct NtIoStatusBlock *out_IoStatusBlock,
+                                      void *out_FsInformation, uint32_t Length,
+                                      uint32_t FsInformationClass);
+NtStatus NtQuerySecurityObject(
+    int64_t handle, int RequestedInformation,
+    struct NtSecurityDescriptor *out_SecurityDescriptor,
+    uint32_t SecurityDescriptorLength, uint32_t *out_ReturnLength);
+NtStatus NtQueueApcThread(int64_t ThreadHandle, NtPkNormalRoutine ApcRoutine,
+                          void *opt_ApcContext, void *opt_Argument1,
+                          void *opt_Argument2);
+NtStatus NtFlushInstructionCache(int64_t ProcessHandle, void *opt_BaseAddress,
+                                 size_t FlushSize);
+NtStatus NtQueryAttributesFile(const struct NtObjectAttributes *object,
+                               struct NtFileBasicInformation *file_information);
+NtStatus NtQueryDirectoryFile(
+    int64_t FileHandle, void *opt_Event, NtIoApcRoutine opt_ApcRoutine,
+    void *opt_ApcContext, struct NtIoStatusBlock *out_IoStatusBlock,
+    void *out_FileInformation, uint32_t FileInformationLength,
+    uint32_t FileInformationClass, int32_t ReturnSingleEntry,
+    struct NtUnicodeString *opt_FileName, int32_t RestartScan);
+NtStatus NtFlushVirtualMemory(int64_t ProcessHandle, void **inout_BaseAddress,
+                              uint32_t **inout_FlushSize,
+                              struct NtIoStatusBlock *out_IoStatusBlock);
+NtStatus NtQueryInformationJobObject(void *JobHandle, int JobInformationClass,
+                                     void *out_JobInformation,
+                                     uint32_t JobInformationLength,
+                                     uint32_t *opt_out_ReturnLength);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § new technology » beyond the pale » runtime library        ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+NtStatus RtlInitializeCriticalSection(struct NtCriticalSection *out_crit);
+NtStatus RtlDeleteCriticalSection(struct NtCriticalSection *crit);
+NtStatus RtlEnterCriticalSection(struct NtCriticalSection *inout_crit);
+NtStatus RtlLeaveCriticalSection(struct NtCriticalSection *inout_crit);
+NtStatus RtlTryEnterCriticalSection(struct NtCriticalSection *inout_crit);
+NtStatus RtlInitUnicodeString(struct NtUnicodeString *inout_DestinationString,
+                              const char16_t *SourceString);
+void RtlFreeUnicodeString(struct NtUnicodeString **string);
+NtStatus RtlQueryEnvironmentVariable_U(char16_t *Environment,
+                                       struct NtUnicodeString *Name,
+                                       struct NtUnicodeString *Value);
+NtStatus RtlConvertSidToUnicodeString(struct NtUnicodeString *out_UnicodeString,
+                                      void *Sid,
+                                      int32_t AllocateDestinationString);
+void *RtlCreateHeap(uint32_t flags, void *base, size_t reserve_sz,
+                    size_t commit_sz, void *lock, void *params);
+NtStatus RtlDestroyHeap(void *base);
+void *RtlAllocateHeap(int64_t heap, uint32_t flags, size_t size);
+void *RtlReAllocateHeap(int64_t heap, uint32_t flags, void *ptr, size_t size);
+NtStatus RtlFreeHeap(int64_t heap, uint32_t flags, void *ptr);
+size_t RtlSizeHeap(int64_t heap, uint32_t flags, void *ptr);
+NtStatus RtlValidateHeap(int64_t heap, uint32_t flags, void *ptr);
+NtStatus RtlLockHeap(int64_t heap);
+NtStatus RtlUnlockHeap(int64_t heap);
+NtStatus RtlGetProcessHeaps(uint32_t count, void **out_Heaps);
+NtStatus RtlWalkHeap(int64_t heap, void *out_Info);
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/thunk/ntdll.inc */
+
+#define NtYieldExecution(...) __imp_NtYieldExecution(__VA_ARGS__)
+
+extern typeof(NtYieldExecution) *const __imp_NtYieldExecution __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/ntdllimport.h */
+
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#define COSMOPOLITAN_LIBC_NT_NTDLLIMPORT_H_
+
+
+/*!BEGIN ape/relocations.h */
+
+#define COSMOPOLITAN_APE_RELOCATIONS_H_
+/*─────────────────────────────────────────────────────────────────────────────╗
+│ αcτµαlly pδrταblε εxεcµταblε § relocations                                   │
+╚──────────────────────────────────────────────────────────────────────────────╝
+  One of the things αcτµαlly pδrταblε εxεcµταblε does a good job
+  abstracting, is how a program needs to exist at three addresses
+  simultaneously during the early stages of the loading process.
+
+  By default, the linker calculates all symbols using virtual addresses.
+  In some cases it's necessary to use addend macros that change virtual
+  addresses into the other two types: physical and real. */
+
+#define IMAGE_BASE_REAL 0x2000
+
+#ifndef IMAGE_BASE_VIRTUAL
+#define IMAGE_BASE_VIRTUAL 0x400000
+#endif
+
+#ifndef IMAGE_BASE_PHYSICAL
+#define IMAGE_BASE_PHYSICAL 0x100000
+#endif
+
+/**
+ * Returns Relative Virtual Address.
+ */
+#define RVA(x) ((x) - (IMAGE_BASE_VIRTUAL))
+
+/**
+ * Adjusts virtual address so it's relative to load address.
+ */
+#define PHYSICAL(x) ((x) - (IMAGE_BASE_VIRTUAL - IMAGE_BASE_PHYSICAL))
+
+/**
+ * Makes high-entropy read-only addresses relocatable in real mode.
+ */
+#define REAL(x) ((x) - (IMAGE_BASE_VIRTUAL - IMAGE_BASE_REAL))
+
+#if IMAGE_BASE_VIRTUAL % 0x200000 != 0
+#error "IMAGE_BASE_VIRTUAL must be 2mb aligned"
+#endif
+#if IMAGE_BASE_PHYSICAL % 0x1000 != 0
+#error "IMAGE_BASE_PHYSICAL must be 4kb aligned"
+#endif
+#if IMAGE_BASE_REAL % 0x1000 != 0
+#error "IMAGE_BASE_REAL must be 4kb aligned"
+#endif
+
+#ifdef __ASSEMBLER__
+/* clang-format off */
+
+.macro	.ntimp	fn:req
+	yoink	_init_ntdll
+	.initbss 202,_init_ntdll.\fn
+__imp_\fn:
+	.quad	0
+	.endobj	__imp_\fn,globl,hidden
+	.previous
+	.initro 202,_init_ntdll.2.\fn
+	.quad	RVA(.L\fn)
+	.previous
+	.section .rodata.str1.1,"aSM",@progbits,1
+.L\fn:
+	.asciz	"\fn"
+	.previous
+.endm
+
+/* clang-format on */
+#endif /* __ASSEMBLER__ */
+
+
+/*!BEGIN libc/nt/paint.h */
+
+#define COSMOPOLITAN_LIBC_NT_PAINT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § new technology » cpu graphics                             ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+int64_t BeginPaint(int64_t hWnd, struct NtPaintStruct *lpPaint);
+int32_t EndPaint(int64_t hWnd, const struct NtPaintStruct *lpPaint);
+int32_t BitBlt(int64_t hdc, int x, int y, int cx, int cy, int64_t hdcSrc,
+               int x1, int y1, uint32_t rop);
+int32_t GetClientRect(int64_t hWnd, struct NtRect *lpRect);
+int32_t GetWindowRect(int64_t hWnd, struct NtRect *lpRect);
+int32_t SetBkMode(int64_t hdc, int mode);
+uint32_t SetTextColor(int64_t hdc, uint32_t color);
+uint32_t SetTextAlign(int64_t hdc, uint32_t align);
+int32_t SetTextJustification(int64_t hdc, int extra, int count);
+int32_t DrawText(int64_t hdc, const char16_t *lpchText, int cchText,
+                 struct NtRect *lprc, uint32_t format);
+int32_t DrawTextEx(int64_t hdc, char16_t *lpchText, int cchText,
+                   struct NtRect *lprc, uint32_t format,
+                   struct NtDrawTextParams *lpdtp);
+int32_t FillRect(int64_t hDC, const struct NtRect *lpRC, int64_t hBrush);
+uint32_t GetPixel(int64_t hdc, int x, int y);
+uint32_t SetPixel(int64_t hdc, int x, int y, uint32_t color);
+bool32 RedrawWindow(int64_t hWnd, const struct NtRect *opt_lprcUpdate,
+                    int64_t opt_hrgnUpdate, uint32_t rdwFlags);
+int64_t CreateCompatibleDC(int64_t hdc);
+int64_t CreateCompatibleBitmap(int64_t hdc, int cx, int cy);
+int64_t SelectObject(int64_t hdc, int64_t h);
+bool32 DeleteObject(int64_t ho);
+bool32 DeleteDC(int64_t hdc);
+int SaveDC(int64_t hdc);
+bool32 RestoreDC(int64_t hdc, int nSavedDC);
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/thunk/paint.inc */
+
+#define SetPixel(...) __imp_SetPixel(__VA_ARGS__)
+#define GetPixel(...) __imp_GetPixel(__VA_ARGS__)
+
+extern typeof(SetPixel) *const __imp_SetPixel __msabi;
+extern typeof(GetPixel) *const __imp_GetPixel __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/privilege.h */
+
+#define COSMOPOLITAN_LIBC_NT_PRIVILEGE_H_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » check your privilege                     ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define kNtSePrivilegeEnabledByDefault 0x00000001u
+#define kNtSePrivilegeEnabled          0x00000002u
+#define kNtSePrivilegeRemoved          0x00000004u
+#define kNtSePrivilegeUsedForAccess    0x80000000u
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+bool32 LookupPrivilegeValue(const char16_t *opt_lpSystemName,
+                            const char16_t *lpName, struct NtLuid *out_lpLuid);
+
+bool32 AdjustTokenPrivileges(int64_t TokenHandle, bool32 DisableAllPrivileges,
+                             const struct NtTokenPrivileges *opt_NewState,
+                             uint32_t BufferLength,
+                             struct NtTokenPrivileges *opt_out_PreviousState,
+                             uint32_t *opt_out_ReturnLength);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/process.h */
+
+#define COSMOPOLITAN_LIBC_NT_PROCESS_H_
+
+
+/*!BEGIN libc/nt/startupinfo.h */
+
+#define COSMOPOLITAN_LIBC_NT_NTSTARTUPINFO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void GetStartupInfo(struct NtStartupInfo *lpStartupInfo);
+
+bool32 InitializeProcThreadAttributeList(
+    struct NtProcThreadAttributeList *opt_inout_lpAttributeList,
+    uint32_t dwAttributeCount, uint32_t reserved_dwFlags, size_t *inout_lpSize)
+    paramsnonnull((4));
+bool32 UpdateProcThreadAttribute(
+    struct NtProcThreadAttributeList *inout_lpAttributeList, uint32_t dwFlags,
+    const uint32_t *Attribute, const void *lpValue, size_t cbSize,
+    void *reserved_lpPreviousValue, size_t *reserved_lpReturnSize)
+    paramsnonnull((1, 3, 4));
+void DeleteProcThreadAttributeList(
+    struct NtProcThreadAttributeList *inout_lpAttributeList) paramsnonnull();
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/thunk/startupinfo.inc */
+
+#define GetStartupInfo(...) __imp_GetStartupInfoW(__VA_ARGS__)
+
+extern typeof(GetStartupInfo) *const __imp_GetStartupInfoW __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » processes                                ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+bool32 CreateProcess(const char16_t *opt_lpApplicationName,
+                     char16_t *lpCommandLine,
+                     struct NtSecurityAttributes *opt_lpProcessAttributes,
+                     struct NtSecurityAttributes *opt_lpThreadAttributes,
+                     bool32 bInheritHandles, uint32_t dwCreationFlags,
+                     void *opt_lpEnvironment,
+                     const char16_t *opt_lpCurrentDirectory,
+                     const struct NtStartupInfo *lpStartupInfo,
+                     struct NtProcessInformation *opt_out_lpProcessInformation)
+    paramsnonnull((2, 9));
+
+uint32_t GetThreadId(int64_t hThread);   /* cf. NT_TID */
+uint32_t GetProcessId(int64_t hProcess); /* cf. NT_PID */
+void SetLastError(uint32_t dwErrCode);
+uint32_t FormatMessage(uint32_t dwFlags, const void *lpSource,
+                       uint32_t dwMessageId, uint32_t dwLanguageId,
+                       char16_t *lpBuffer, uint32_t nSize, va_list *Arguments);
+int64_t OpenProcess(uint32_t dwDesiredAccess, bool32 bInheritHandle,
+                    uint32_t dwProcessId);
+uint32_t GetCurrentProcessId(void); /* %gs:0x40 */
+uint32_t GetEnvironmentVariable(const char16_t *lpName, char16_t *lpBuffer,
+                                uint32_t nSize);
+uint32_t SetEnvironmentVariable(const char16_t *lpName, char16_t *lpValue);
+int32_t SetEnvironmentStrings(char16_t *NewEnvironment);
+bool32 GetProcessAffinityMask(int64_t hProcess,
+                              uintptr_t *lpProcessAffinityMask,
+                              uintptr_t *lpSystemAffinityMask);
+uint64_t /*bool32*/ SetProcessAffinityMask(int64_t hProcess,
+                                           uintptr_t dwProcessAffinityMask);
+
+/* e.g. kNtAboveNormalPriorityClass, kNtHighPriorityClass */
+uint32_t GetPriorityClass(int64_t hProcess);
+bool32 SetPriorityClass(int64_t hProcess, uint32_t dwPriorityClass);
+bool32 SetProcessPriorityBoost(int64_t hProcess, bool32 bDisablePriorityBoost);
+bool32 GetProcessPriorityBoost(int64_t hProcess, bool32 *pDisablePriorityBoost);
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/thunk/process.inc */
+
+#define GetEnvironmentVariable(...) __imp_GetEnvironmentVariableW(__VA_ARGS__)
+extern typeof(GetEnvironmentVariable) *const
+    __imp_GetEnvironmentVariableW __msabi;
+
+#define SetEnvironmentVariable(...) __imp_SetEnvironmentVariableW(__VA_ARGS__)
+extern typeof(SetEnvironmentVariable) *const
+    __imp_SetEnvironmentVariableW __msabi;
+
+#define GetPriorityClass(...) __imp_GetPriorityClass(__VA_ARGS__)
+extern typeof(GetPriorityClass) *const __imp_GetPriorityClass __msabi;
+
+#define SetPriorityClass(...) __imp_SetPriorityClass(__VA_ARGS__)
+extern typeof(SetPriorityClass) *const __imp_SetPriorityClass __msabi;
+
+#define GetCurrentProcessId(...) __imp_GetCurrentProcessId(__VA_ARGS__)
+extern typeof(GetCurrentProcessId) *const __imp_GetCurrentProcessId __msabi;
+
+#define CreateProcess(...) __imp_CreateProcessW(__VA_ARGS__)
+extern typeof(CreateProcess) *const __imp_CreateProcessW __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/registry.h */
+
+#define COSMOPOLITAN_LIBC_NT_REGISTRY_H_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » registry                                 ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define kNtMaxKeyNameChars   255
+#define kNtMaxValueNameChars 16383
+#define kNtMaxValueBytes     0x100000
+
+#define kNtHkeyClassesRoot              0x80000000l
+#define kNtHkeyCurrentUser              0x80000001l
+#define kNtHkeyLocalMachine             0x80000002l
+#define kNtHkeyUsers                    0x80000003l
+#define kNtHkeyPerformanceData          0x80000004l
+#define kNtHkeyPerformanceText          0x80000050l
+#define kNtHkeyPerformanceNlstext       0x80000060l
+#define kNtHkeyCurrentConfig            0x80000005l
+#define kNtHkeyDynData                  0x80000006l
+#define kNtHkeyCurrentUserLocalSettings 0x80000007l
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int RegOpenKey(int64_t hKey, const char16_t *opt_lpSubKey,
+               int64_t *out_phkResult) paramsnonnull((3));
+int RegOpenKeyEx(int64_t hKey, const char16_t *opt_lpSubKey,
+                 uint32_t opt_ulOptions, int samDesired, int64_t *out_phkResult)
+    paramsnonnull((5));
+int RegCloseKey(int64_t hKey);
+
+int RegGetValue(int64_t hkey, const char16_t *opt_lpSubKey,
+                const char16_t *opt_lpValue, unsigned dwFlags, int *opt_pdwType,
+                void *opt_out_pvData, uint32_t *opt_inout_pcbDataBytes);
+int RegSetValue(int64_t hKey, const char16_t *lpSubKey, int dwType,
+                const char16_t *lpData, uint32_t cbData);
+int RegSetValueEx(int64_t hKey, const char16_t *lpValueName, uint32_t Reserved,
+                  int dwType, const unsigned char *lpData, uint32_t cbData);
+
+int RegQueryInfoKey(int64_t hKey, char16_t *opt_out_lpClass,
+                    uint32_t *opt_inout_lpClassLen, uint32_t *lpReserved,
+                    uint32_t *opt_out_lpcSubKeys,
+                    uint32_t *opt_out_lpcbMaxSubKeyBytes,
+                    uint32_t *opt_out_lpcbMaxClassBytes,
+                    uint32_t *opt_out_lpcValues,
+                    uint32_t *opt_out_lpcbMaxValueNameBytes,
+                    uint32_t *opt_out_lpcbMaxValueBytes,
+                    uint32_t *opt_out_lpcbSecurityDescriptorBytes,
+                    struct NtFileTime *opt_out_lpftLastWriteTime);
+int RegEnumKey(int64_t hKey, uint32_t dwIndex, char16_t *opt_lpName,
+               uint32_t NameLen);
+int RegEnumKeyEx(int64_t hKey, uint32_t dwIndex, char16_t *out_lpName,
+                 uint32_t *inout_lpcchName, uint32_t *lpReserved,
+                 char16_t *opt_out_lpClass, uint32_t *opt_inout_lpcchClassLen,
+                 struct NtFileTime *opt_out_lpftLastWriteTime);
+
+int RegEnumValue(int64_t hKey, uint32_t dwIndex, char16_t *lpValueName,
+                 uint32_t *lpValueNameLen, uint32_t *lpReserved,
+                 int *opt_out_lpType, unsigned char *opt_out_lpData,
+                 uint32_t *opt_inout_lpcbDataBytes);
+int RegQueryValue(int64_t hKey, const char16_t *opt_lpSubKey,
+                  char16_t *opt_out_lpData, int32_t *opt_inout_lpcbDataBytes);
+int RegQueryValueEx(int64_t hKey, const char16_t *opt_lpValueName,
+                    uint32_t *lpReserved, int *opt_out_lpType,
+                    unsigned char *opt_out_lpData,
+                    uint32_t *opt_inout_lpcbDataBytes);
+
+int RegOverridePredefKey(int64_t hKey, int64_t hNewHKey);
+int RegOpenUserClassesRoot(void *hToken, uint32_t dwOptions, int samDesired,
+                           int64_t *phkResult);
+int RegOpenCurrentUser(int samDesired, int64_t *phkResult);
+int RegDisablePredefinedCache();
+int RegConnectRegistry(const char16_t *lpMachineName, int64_t hKey,
+                       int64_t *phkResult);
+int RegConnectRegistryEx(const char16_t *lpMachineName, int64_t hKey,
+                         uint32_t Flags, int64_t *phkResult);
+int RegCreateKey(int64_t hKey, const char16_t *lpSubKey, int64_t *phkResult);
+int RegCreateKeyEx(int64_t hKey, const char16_t *lpSubKey, uint32_t Reserved,
+                   int16_t *lpClass, uint32_t dwOptions, int samDesired,
+                   struct NtSecurityAttributes *lpSecurityAttributes,
+                   int64_t *phkResult, uint32_t *lpdwDisposition);
+int RegDeleteKey(int64_t hKey, const char16_t *lpSubKey);
+int RegDeleteKeyEx(int64_t hKey, const char16_t *lpSubKey, int samDesired,
+                   uint32_t Reserved);
+int RegDeleteTree(int64_t hKey, const char16_t *opt_lpSubKey);
+int RegDisableReflectionKey(int64_t hBase);
+int RegEnableReflectionKey(int64_t hBase);
+int RegQueryReflectionKey(int64_t hBase, bool32 *bIsReflectionDisabled);
+int RegDeleteValue(int64_t hKey, const char16_t *lpValueName);
+int RegFlushKey(int64_t hKey);
+int RegGetKeySecurity(int64_t hKey, uint32_t SecurityInformation,
+                      void *pSecurityDescriptor,
+                      uint32_t *lpcbSecurityDescriptorBytes);
+int RegLoadKey(int64_t hKey, const char16_t *lpSubKey, const char16_t *lpFile);
+int RegNotifyChangeKeyValue(int64_t hKey, bool32 bWatchSubtree,
+                            uint32_t dwNotifyFilter, void *hEvent,
+                            int fAsynchronous);
+int RegQueryMultipleValues(int64_t hKey, struct NtValent *inout_val_list,
+                           uint32_t num_vals, int16_t *out_lpValueBuf,
+                           uint32_t *inout_ldwTotsize) paramsnonnull();
+int RegReplaceKey(int64_t hKey, const char16_t *lpSubKey,
+                  const char16_t *lpNewFile, const char16_t *lpOldFile);
+int RegRestoreKey(int64_t hKey, const char16_t *lpFile, uint32_t dwFlags);
+int RegSaveKey(int64_t hKey, const char16_t *lpFile,
+               struct NtSecurityAttributes *lpSecurityAttributes);
+int RegSetKeySecurity(int64_t hKey, uint32_t SecurityInformation,
+                      void *pSecurityDescriptor);
+int RegUnLoadKey(int64_t hKey, const char16_t *lpSubKey);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/runtime.h */
+
+#define COSMOPOLITAN_LIBC_NT_RUNTIME_H_
+
+/**
+ * @fileoverview NT Obligatory Runtime Functions.
+ *
+ * These functions are placed in their own file because they're (a)
+ * abstracted by the Cosmopolitan runtime; and (b) it helps GCC avoid
+ * bloating binaries with debug information the user doesn't need.
+ */
+
+#define kNtCpUtf8             65001
+#define kNtInvalidHandleValue -1L
+#define kNtStdInputHandle     -10L
+#define kNtStdOutputHandle    -11L
+#define kNtStdErrorHandle     -12L
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+char16_t *GetCommandLine(void) nosideeffect;
+char16_t *GetEnvironmentStrings(void) nodiscard;
+bool32 FreeEnvironmentStrings(char16_t *) paramsnonnull();
+bool32 ReadFile(int64_t hFile, void *lpBuffer, uint32_t nNumberOfBytesToRead,
+                uint32_t *lpNumberOfBytesRead,
+                struct NtOverlapped *opt_lpOverlapped);
+bool32 WriteFile(int64_t hFile, const void *lpBuffer,
+                 uint32_t nNumberOfBytesToWrite,
+                 uint32_t *lpNumberOfBytesWritten,
+                 struct NtOverlapped *opt_lpOverlapped);
+bool32 TerminateProcess(int64_t hProcess, uint32_t uExitCode);
+int64_t GetCurrentProcess(void) pureconst;
+void ExitProcess(uint32_t uExitCode) wontreturn;
+uint32_t GetLastError(void) nosideeffect;
+bool32 CloseHandle(int64_t hObject) nothrow nocallback;
+intptr_t GetStdHandle(int64_t nStdHandle) nosideeffect;
+bool32 SetStdHandle(int64_t nStdHandle, int64_t hHandle);
+bool32 SetDefaultDllDirectories(unsigned dirflags);
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/thunk/runtime.inc */
+
+#define FreeEnvironmentStrings(...) __imp_FreeEnvironmentStringsW(__VA_ARGS__)
+extern typeof(FreeEnvironmentStrings) *const
+    __imp_FreeEnvironmentStringsW __msabi;
+
+#define GetCommandLine(...) __imp_GetCommandLineW(__VA_ARGS__)
+extern typeof(GetCommandLine) *const __imp_GetCommandLineW __msabi;
+
+#define GetEnvironmentStrings(...) __imp_GetEnvironmentStringsW(__VA_ARGS__)
+extern typeof(GetEnvironmentStrings) *const
+    __imp_GetEnvironmentStringsW __msabi;
+
+#define GetStdHandle(...) __imp_GetStdHandle(__VA_ARGS__)
+extern typeof(GetStdHandle) *const __imp_GetStdHandle __msabi;
+
+#define SetStdHandle(...) __imp_SetStdHandle(__VA_ARGS__)
+extern typeof(SetStdHandle) *const __imp_SetStdHandle __msabi;
+
+#define ReadFile(...) __imp_ReadFile(__VA_ARGS__)
+extern typeof(ReadFile) *const __imp_ReadFile __msabi;
+
+#define WriteFile(...) __imp_WriteFile(__VA_ARGS__)
+extern typeof(WriteFile) *const __imp_WriteFile __msabi;
+
+#define SetDefaultDllDirectories(...) \
+  __imp_SetDefaultDllDirectories(__VA_ARGS__)
+extern typeof(SetDefaultDllDirectories) *const
+    __imp_SetDefaultDllDirectories __msabi;
+
+#define GetCurrentProcess(...) __imp_GetCurrentProcess(__VA_ARGS__)
+extern typeof(GetCurrentProcess) *const __imp_GetCurrentProcess __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/signals.h */
+
+#define COSMOPOLITAN_LIBC_NT_EXCEPTIONS_H_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » signals                                  ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+typedef int (*NtTopLevelExceptionFilter)(const struct NtExceptionPointers *);
+typedef int32_t (*NtVectoredExceptionHandler)(struct NtExceptionPointers *);
+
+int SetErrorMode(int uMode);
+
+int64_t AddVectoredExceptionHandler(uint32_t First,
+                                    NtVectoredExceptionHandler pHandler);
+int64_t AddVectoredContinueHandler(uint32_t First,
+                                   NtVectoredExceptionHandler pHandler);
+
+uint32_t RemoveVectoredExceptionHandler(int64_t hHandle);
+uint32_t RemoveVectoredContinueHandler(int64_t hHandle);
+
+NtTopLevelExceptionFilter SetUnhandledExceptionFilter(
+    NtTopLevelExceptionFilter opt_lpTopLevelExceptionFilter);
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/thunk/signals.inc */
+
+#define SetErrorMode(...) __imp_SetErrorMode(__VA_ARGS__)
+#define AddVectoredExceptionHandler(...) \
+  __imp_AddVectoredExceptionHandler(__VA_ARGS__)
+#define AddVectoredContinueHandler(...) \
+  __imp_AddVectoredContinueHandler(__VA_ARGS__)
+#define RemoveVectoredExceptionHandler(...) \
+  __imp_RemoveVectoredExceptionHandler(__VA_ARGS__)
+#define RemoveVectoredContinueHandler(...) \
+  __imp_RemoveVectoredContinueHandler(__VA_ARGS__)
+#define SetUnhandledExceptionFilter(...) \
+  __imp_SetUnhandledExceptionFilter(__VA_ARGS__)
+
+extern typeof(SetErrorMode) *const __imp_SetErrorMode __msabi;
+extern typeof(AddVectoredExceptionHandler) *const
+    __imp_AddVectoredExceptionHandler __msabi;
+extern typeof(AddVectoredContinueHandler) *const
+    __imp_AddVectoredContinueHandler __msabi;
+extern typeof(RemoveVectoredExceptionHandler) *const
+    __imp_RemoveVectoredExceptionHandler __msabi;
+extern typeof(RemoveVectoredContinueHandler) *const
+    __imp_RemoveVectoredContinueHandler __msabi;
+extern typeof(SetUnhandledExceptionFilter) *const
+    __imp_SetUnhandledExceptionFilter __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/synchronization.h */
+
+#define COSMOPOLITAN_LIBC_NT_SYNCHRONIZATION_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » synchronization                          ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define InterlockedAdd(PTR, VAL)                                           \
+  ({                                                                       \
+    typeof(*(PTR)) Res;                                                    \
+    typeof(Res) Val = (VAL);                                               \
+    asm volatile("lock xadd\t%0,%1" : "=r"(Res), "+m"(*(PTR)) : "0"(Val)); \
+    Res + Val;                                                             \
+  })
+
+#define InterlockedExchange(PTR, VAL)                      \
+  ({                                                       \
+    typeof(*(PTR)) Res = (VAL);                            \
+    asm volatile("xchg\t%0,%1" : "+r"(Res), "+m"(*(PTR))); \
+    Res;                                                   \
+  })
+
+typedef void (*NtTimerapcroutine)(void *lpArgToCompletionRoutine,
+                                  uint32_t dwTimerLowValue,
+                                  uint32_t dwTimerHighValue);
+typedef void (*NtWaitOrTimerCallback)(void *lpParameter,
+                                      bool32 TimerOrWaitFired);
+
+void Sleep(uint32_t dwMilliseconds);
+uint32_t SleepEx(uint32_t dwMilliseconds, bool32 bAlertable);
+
+void GetSystemTime(struct NtSystemTime *lpSystemTime);
+bool32 SystemTimeToFileTime(const struct NtSystemTime *lpSystemTime,
+                            struct NtFileTime *lpFileTime);
+void GetSystemTimeAsFileTime(struct NtFileTime *);        /* win8+ */
+void GetSystemTimePreciseAsFileTime(struct NtFileTime *); /* win8+ */
+
+uint32_t WaitForSingleObject(int64_t hHandle, uint32_t dwMilliseconds);
+uint32_t WaitForMultipleObjects(uint32_t nCount, const int64_t *lpHandles,
+                                bool32 bWaitAll, uint32_t dwMilliseconds);
+uint32_t WaitForSingleObjectEx(int64_t hHandle, uint32_t dwMilliseconds,
+                               bool32 bAlertable);
+uint32_t WaitForMultipleObjectsEx(unsigned int nCount, const int64_t *lpHandles,
+                                  bool32 bWaitAll, uint32_t dwMilliseconds,
+                                  bool32 bAlertable);
+bool32 RegisterWaitForSingleObject(int64_t *phNewWaitObject, int64_t hObject,
+                                   NtWaitOrTimerCallback Callback,
+                                   void *Context, uint32_t dwMilliseconds,
+                                   uint32_t dwFlags);
+
+int64_t CreateWaitableTimer(struct NtSecurityAttributes *lpTimerAttributes,
+                            bool32 bManualReset, const char16_t *lpTimerName);
+bool32 SetWaitableTimer(int64_t hTimer, const int64_t *lpDueTimeAsFtOrNegRela,
+                        int32_t opt_lPeriodMs, NtTimerapcroutine opt_callback,
+                        void *lpArgToCallback, bool32 fUnsleepSystem);
+
+int32_t SetEvent(int64_t hEvent);
+int32_t ResetEvent(int64_t hEvent);
+int32_t PulseEvent(int64_t hEvent);
+
+int32_t ReleaseMutex(int64_t hMutex);
+int32_t ReleaseSemaphore(int64_t hSemaphore, int32_t lReleaseCount,
+                         int *lpPreviousCount);
+
+void InitializeCriticalSection(struct NtCriticalSection *lpCriticalSection);
+void EnterCriticalSection(struct NtCriticalSection *lpCriticalSection);
+void LeaveCriticalSection(struct NtCriticalSection *lpCriticalSection);
+int32_t TryEnterCriticalSection(struct NtCriticalSection *lpCriticalSection);
+void DeleteCriticalSection(struct NtCriticalSection *lpCriticalSection);
+int32_t InitializeCriticalSectionAndSpinCount(
+    struct NtCriticalSection *lpCriticalSection, uint32_t dwSpinCount);
+uint32_t SetCriticalSectionSpinCount(
+    struct NtCriticalSection *lpCriticalSection, uint32_t dwSpinCount);
+
+void InitializeSRWLock(intptr_t *);
+void AcquireSRWLockExclusive(intptr_t *);
+void AcquireSRWLockShared(intptr_t *);
+void ReleaseSRWLockExclusive(intptr_t *);
+void ReleaseSRWLockShared(intptr_t *);
+void TryAcquireSRWLockExclusive(intptr_t *);
+void TryAcquireSRWLockShared(intptr_t *);
+
+uint64_t GetTickCount64(void);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/systeminfo.h */
+
+#define COSMOPOLITAN_LIBC_NT_INFO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void GetSystemInfo(struct NtSystemInfo *lpSystemInfo);
+uint32_t GetSystemDirectory(char16_t *lpBuffer, uint32_t uSize);
+uint32_t GetSystemDirectoryA(char *lpBuffer, uint32_t uSize);
+uint32_t GetWindowsDirectory(char16_t *lpBuffer, uint32_t uSize);
+uint32_t GetTempPath(uint32_t uSize, char16_t *lpBuffer);
+
+bool32 GetComputerNameEx(/* enum/computernameformat.h */ int NameType,
+                         char16_t *opt_lpBuffer, uint32_t *nSize);
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/thunk/systeminfo.inc */
+
+#define GetSystemInfo(...) __imp_GetSystemInfo(__VA_ARGS__)
+#define GetTempPath(...) __imp_GetTempPathW(__VA_ARGS__)
+
+extern typeof(GetSystemInfo) *const __imp_GetSystemInfo __msabi;
+extern typeof(GetTempPath) *const __imp_GetTempPathW __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/thread.h */
+
+#define COSMOPOLITAN_LIBC_NT_THREADS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » threads                                  ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+typedef uint32_t (*NtThreadStartRoutine)(void *lpParameter);
+
+int64_t CreateThread(struct NtSecurityAttributes *lpThreadAttributes,
+                     size_t dwStackSize, NtThreadStartRoutine lpStartAddress,
+                     void *lpParameter, uint32_t dwCreationFlags,
+                     uint32_t *opt_lpThreadId);
+
+void ExitThread(uint32_t dwExitCode) wontreturn;
+int64_t GetCurrentThread(void);
+uint32_t GetCurrentThreadId(void);
+uint64_t SetThreadAffinityMask(int64_t hThread, uintptr_t dwThreadAffinityMask);
+int64_t OpenThread(uint32_t dwDesiredAccess, bool32 bInheritHandle,
+                   uint32_t dwThreadId);
+bool32 TerminateThread(int64_t hThread, uint32_t dwExitCode);
+bool32 GetExitCodeThread(int64_t hThread, uint32_t *lpExitCode);
+
+/* e.g. kNtThreadPriorityAboveNormal, -1u on error */
+uint32_t GetThreadPriority(int64_t hThread);
+bool32 SetThreadPriority(int64_t hThread, int32_t nPriority);
+bool32 SetThreadPriorityBoost(int64_t hThread, bool32 bDisablePriorityBoost);
+bool32 GetThreadPriorityBoost(int64_t hThread, bool32 *pDisablePriorityBoost);
+bool32 GetThreadIOPendingFlag(int64_t hThread, bool32 *lpIOIsPending);
+
+bool32 CancelSynchronousIo(int64_t hThread);
+bool32 CancelIo(int64_t hFile);
+bool32 CancelIoEx(int64_t hFile, struct NtOverlapped opt_lpOverlapped);
+
+#if ShouldUseMsabiAttribute()
+
+
+/*!BEGIN libc/nt/thunk/thread.inc */
+
+#define GetCurrentThread(...)  __imp_GetCurrentThread(__VA_ARGS__)
+#define GetThreadPriority(...) __imp_GetThreadPriority(__VA_ARGS__)
+#define SetThreadPriority(...) __imp_SetThreadPriority(__VA_ARGS__)
+
+extern typeof(GetCurrentThread) *const __imp_GetCurrentThread __msabi;
+extern typeof(GetThreadPriority) *const __imp_GetThreadPriority __msabi;
+extern typeof(SetThreadPriority) *const __imp_SetThreadPriority __msabi;
+#endif /* ShouldUseMsabiAttribute() */
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/windows.h */
+
+#define COSMOPOLITAN_LIBC_NT_WINDOWS_H_
+/*                            ░░░░
+                       ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
+                      ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
+                     ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓░
+                     ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   ▓▓▓▓▓▓▒        ▒▒▒▓▓█
+                    ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                   ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓   █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                   ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░  ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+                  ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒
+                  ▒▒▒▒▓▓      ▓▒▒▓▓▓▓   ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                                   ▒▓  ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓
+                  ░░░░░░░░░░░▒▒▒▒      ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█
+                ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓     ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓
+               ░▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓░      ░▓███▓
+               ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░  ▒▓▓▓▒▒▒         ░▒▒▒▓   ████████████
+              ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓  ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░           ░███
+              ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓            ███
+             ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒            ▓██
+             ▒░░░░░░░░░░░▒▒▒▒▒▓▓   ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓           ▓██
+            ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒  ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒           ███
+                            ░▒▓  ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓          ▓██
+╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗
+│ cosmopolitan § new technology » windows                                  ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+int64_t CreateWindowEx(uint32_t dwExStyle, const char16_t *lpClassName,
+                       const char16_t *lpWindowName, uint32_t dwStyle, int X,
+                       int Y, int nWidth, int nHeight, int64_t hWndParent,
+                       int64_t hMenu, int64_t hInstance, int64_t lpParam);
+
+uint16_t RegisterClass(const struct NtWndClass *lpWndClass);
+
+int64_t DefWindowProc(int64_t hWnd, uint32_t Msg, uint64_t wParam,
+                      int64_t lParam);
+
+int32_t CloseWindow(int64_t hWnd);
+int32_t DestroyWindow(int64_t hWnd);
+int32_t ShowWindow(int64_t hWnd, int sw);
+int32_t ShowCaret(bool32 bShow);
+int32_t AnimateWindow(int64_t hWnd, uint32_t dwTime, uint32_t dwFlags);
+int64_t LoadIcon(int64_t hInstance, const char16_t *lpIconName);
+int32_t MoveWindow(int64_t hWnd, int X, int Y, int nWidth, int nHeight,
+                   bool32 bRepaint);
+int32_t BringWindowToTop(int64_t hWnd);
+int32_t IsWindowVisible(int64_t hWnd);
+int32_t SetWindowText(int64_t hWnd, const char16_t *lpString);
+int32_t GetWindowText(int64_t hWnd, char16_t *lpString, int nMaxCount);
+int32_t SetWindowPos(int64_t hWnd, int64_t hWndInsertAfter, int X, int Y,
+                     int cx, int cy, uint32_t uFlags);
+bool32 GetWindowPlacement(int64_t hWnd, struct NtWindowPlacement *lpwndpl);
+bool32 SetWindowPlacement(int64_t hWnd,
+                          const struct NtWindowPlacement *lpwndpl);
+
+int64_t GetCursor(void);
+int64_t SetCursor(int64_t hCursor);
+int32_t ShowCursor(bool32 bShow);
+int64_t LoadCursor(int64_t opt_hInstance, const char16_t *lpCursorNameOrIdc);
+
+bool32 IsWindow(int64_t hWnd);
+bool32 IsMenu(int64_t hMenu);
+bool32 IsChild(int64_t hWndParent, int64_t hWnd);
+bool32 IsZoomed(int64_t hWnd);
+bool32 IsIconic(int64_t hWnd);
+
+uintptr_t SetTimer(int64_t opt_hWnd, uintptr_t nIDEvent, uint32_t uElapseMs,
+                   NtTimerProc lpTimerFunc);
+int32_t KillTimer(int64_t hWnd, uintptr_t uIDEvent);
+
+int64_t SetCapture(int64_t hWnd);
+bool32 ReleaseCapture(void);
+int16_t GetKeyState(int32_t nVirtKey);
+
+int64_t CreateMenu(void);
+int64_t CreatePopupMenu(void);
+int64_t GetMenu(int64_t hWnd);
+bool32 DestroyMenu(int64_t hMenu);
+int64_t GetSystemMenu(int64_t hWnd, bool32 bRevert);
+bool32 AppendMenu(int64_t hMenu, uint32_t mfFlags, uintptr_t uIDNewItem,
+                  const char16_t *lpNewItem);
+bool32 InsertMenu(int64_t hMenu, uint32_t uPosition, uint32_t uFlags,
+                  uintptr_t uIDNewItem, const char16_t *lpNewItem);
+bool32 TrackPopupMenu(int64_t hMenu, uint32_t uFlags, int32_t x, int32_t y,
+                      int32_t nReserved, int64_t hWnd,
+                      const struct NtRect *prcRect);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/nt/winsock.h */
+
+#define COSMOPOLITAN_LIBC_NT_WINSOCK_H_
+/* ░▓█████████████████████████████████████████████▓▒
+   ░█▓░░░░░░░░░▓██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██▓▒░
+   ░█▓░ ░▒▒▒▒  ▓██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▓▒▒
+   ░█▓░ ░▓▓▓▒  ▓██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▓▒▒
+   ░█▓░       ░▓██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██▓▒▒
+   ░███████████████████████████████████████████████▓▒▒
+   ░█▓░                                          ▒█▓▒▒
+   ░█▓░                                          ▒█▓▒▒
+   ░█▓░          ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░             ▒█▓▒▒
+   ░█▓░        ░▒░                 ▒█▓░          ▒█▓▒▒
+   ░█▓░      ░░░░    ░░░░░░░░      ▒▓▓▓▒░        ▒█▓▒▒
+   ░█▓░    ░░░░  ░░░░░▒▒▓███▓░░░░░░░░▒▓▓▓▓▒      ▒█▓▒▒
+   ░█▓░   ░▒▒  ░░░░░░░▒▒████▓░░░░░░░░░░▒██▓      ▒█▓▒▒
+   ░█▓░   ░▒▒  ░░░░░░░▒▒▓▓▓▓▓░░░░░░░░░▒▒██▓      ▒█▓▒▒
+   ░█▓░   ░▒▒   ░░▒▒▒▒░░░░░ ░▒▒▒▒░░░░░▒▒██▓      ▒█▓▒▒
+   ░█▓░   ░▒▒   ░░▒▓█▓░░░░░░░▒▓██▓░░░░▒▒██▓      ▒█▓▒▒
+   ░█▓░   ░▒▒   ░░▒▓█▓░░░░░░░▒▓██▓░░░░▒▒██▓      ▒█▓▒▒
+   ░█▓░   ░▒▒   ░░▒▓█▓░░░░░░░▒▓██▓░░░░▒▒██▓   ░▓█▓▒▒▒▒
+   ░█▓░   ░▒▒   ░░▒▓█▓░░░░░░░▒▓██▓░░░░░▒██▓   ░████▓▒░
+   ░█▓░     ░░░░░░░░▒▒░░░░░░░░░▒▒░░░▒▒▓▓▒░░    ░░▓███▓▒░
+   ░█▓░      ░░░░░░░░░░░░░░░░░░░░░░▒▓▓▓▒░        ▒████▓▒░░░░░░
+   ░█▓░        ░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░        ░▓▓▓▓██▒░░░░░░░░
+   ░█▓░          ▒█████████████████▒  ▓█▓▒░      ▒█▓ ░█▓      ░▓▓░
+   ░█▓░                              ░▓████▒░    ▒█▓▒░  ░░░░░░░  ▓█▓░
+   ░█▓░                                ░▓████▒░  ░▒░  ░░░░░░░░░░░  ░█▓
+   ░█▓                                    ▒███▓▒▒░  ░░░░░░░░░░░░░░░  ▒▓▓
+   ░██████████████████████████████████████▓▒▓█▓░  ░░░░░░░░░░░░░░░░░░ ▒█▓
+    ▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░ ░░░░░░░░░░░░░░░░░░░░▒█▓
+         ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒██▒▒▒░░░░░░░░░░░░░░░░░░░░░▒█▓
+                                          ░██▒▒▒▒▒░░░░░░░░░░░░░░░░░░░▒█▓
+                                          ░▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░▒▓█▓
+                                            ░▓▓▓▒▒▒▒▒▒░░░░░░░░░░░▒▒▒▒▓▓▒
+                                              ░██▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  ░█▓
+                                                 ▒█▓▒▒▒▒▒▒▒▒▒▒▒██▓▒░ ░█▓
+                                                   ▒█████████████▓▒▒░  ░██▒
+╔────────────────────────────────────────────────────────────────▀▀▀▀───▀▀▀▀─│─╗
+│ cosmopolitan § new technology » winsock                                  ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define kNtCompEqual   0
+#define kNtCompNotless 1
+
+#define kNtWsaFlagOverlapped      0x01
+#define kNtWsaFlagNoHandleInherit 0x80
+
+#define kNtTfDisconnect       0x01
+#define kNtTfReuseSocket      0x02
+#define kNtTfWriteBehind      0x04
+#define kNtTfUseDefaultWorker 0x00
+#define kNtTfUseSystemThread  0x10
+#define kNtTfUseKernelApc     0x20
+
+#define kNtSoConnectTime          0x700C
+#define kNtSoUpdateAcceptContext  0x700B
+#define kNtSoUpdateConnectContext 0x7010
+
+#define kNtSioAddressListChange           0x28000017u
+#define kNtSioAddressListQuery            0x48000016u
+#define kNtSioAddressListSort             0xC8000019u
+#define kNtSioAssociateHandle             0x88000001u
+#define kNtSioEnableCircularQueueing      0x28000002u
+#define kNtSioFindRoute                   0x48000003u
+#define kNtSioFlush                       0x28000004u
+#define kNtSioGetBroadcastAddress         0x48000005u
+#define kNtSioGetExtensionFunctionPointer 0xC8000006u
+#define kNtSioGetGroupQos                 0xC8000008u
+#define kNtSioGetQos                      0xC8000007u
+#define kNtSioMulticastScope              0x8800000Au
+#define kNtSioMultipointLoopback          0x88000009u
+#define kNtSioQueryRssProcessorInfo       0x48000025u
+#define kNtSioQueryTargetPnpHandle        0x48000018u
+#define kNtSioReserved1                   0x8800001Au
+#define kNtSioReserved2                   0x88000021u
+#define kNtSioRoutingInterfaceChange      0x88000015u
+#define kNtSioRoutingInterfaceQuery       0xC8000014u
+#define kNtSioSetGroupQos                 0x8800000Cu
+#define kNtSioSetQos                      0x8800000Bu
+#define kNtSioSocketCloseNotify           0x9800000Du
+#define kNtSioTranslateHandle             0xC800000Du
+#define kNtSioUdpConnreset                0x9800000Cu
+#define kNtSioUdpNetreset                 0x9800000Fu
+
+#define kNtNspNotifyImmediately 0
+#define kNtNspNotifyHwnd        1
+#define kNtNspNotifyEvent       2
+#define kNtNspNotifyPort        3
+#define kNtNspNotifyApc         4
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct NtTimeval {
+  int32_t tv_sec; /* [sic] */
+  int32_t tv_usec;
+};
+
+struct NtIovec {
+  uint32_t len;
+  char *buf;
+};
+
+struct NtMsgHdr {
+  struct sockaddr *name;
+  int32_t namelen;
+  struct NtIovec *lpBuffers;
+  uint32_t dwBufferCount;
+  struct NtIovec Control;
+  uint32_t dwFlags;
+};
+
+struct NtWsaData {
+  uint16_t wVersion;
+  uint16_t wHighVersion;
+  uint16_t iMaxSockets;
+  uint16_t iMaxUdpDg;
+  char *lpVendorInfo;
+  char szDescription[257];
+  char szSystemStatus[129];
+};
+
+struct NtSocketAddress {
+  struct sockaddr *lpSockaddr;
+  int32_t iSockaddrLength;
+};
+
+struct NtSocketAddressList {
+  int32_t iAddressCount;
+  struct NtSocketAddress Address[1];
+};
+
+struct NtAddrInfoEx {  /* win8+ */
+  int32_t ai_flags;    /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
+  int32_t ai_family;   /* PF_XXX */
+  int32_t ai_socktype; /* SOCK_XXX */
+  int32_t ai_protocol;
+  uint64_t ai_addrlen;
+  char16_t *ai_canonname;
+  struct sockaddr *ai_addr;
+  void *ai_blob;
+  uint64_t ai_bloblen;
+  struct NtGuid *ai_provider;
+  struct NtAddrInfoEx *ai_next;
+  int32_t ai_version;          /* v2 */
+  char16_t *ai_fqdn;           /* v2 */
+  int32_t ai_interfaceindex;   /* v3 */
+  int64_t ai_resolutionhandle; /* v4 */
+};
+
+struct NtWsaProtocolChain {
+  int32_t ChainLen;
+  uint32_t ChainEntries[7];
+};
+
+struct NtWsaProtocolInfo {
+  uint32_t dwServiceFlags1;
+  uint32_t dwServiceFlags2;
+  uint32_t dwServiceFlags3;
+  uint32_t dwServiceFlags4;
+  uint32_t dwProviderFlags;
+  struct NtGuid ProviderId;
+  uint32_t dwCatalogEntryId;
+  struct NtWsaProtocolChain ProtocolChain;
+  int32_t iVersion;
+  int32_t iAddressFamily;
+  int32_t iMaxSockAddr;
+  int32_t iMinSockAddr;
+  int32_t iSocketType;
+  int32_t iProtocol;
+  int32_t iProtocolMaxOffset;
+  int32_t iNetworkByteOrder;
+  int32_t iSecurityScheme;
+  uint32_t dwMessageSize;
+  uint32_t dwProviderReserved;
+  char16_t szProtocol[256];
+};
+
+struct NtFlowSpec {
+  uint32_t TokenRate;          /* bytes/sec */
+  uint32_t TokenBucketSize;    /* bytes */
+  uint32_t PeakBandwidth;      /* bytes/sec */
+  uint32_t Latency;            /* µs */
+  uint32_t DelayVariation;     /* µs */
+  uint32_t ServiceType;        /* kNtServicetypeXxx */
+  uint32_t MaxSduSize;         /* bytes */
+  uint32_t MinimumPolicedSize; /* bytes */
+};
+
+struct NtQos {
+  struct NtFlowSpec SendingFlowspec;
+  struct NtFlowSpec ReceivingFlowspec;
+  struct NtIovec ProviderSpecific;
+};
+
+struct NtWsaVersion {
+  uint32_t dwVersion;
+  int ecHow;
+};
+
+struct NtAfProtocols {
+  int32_t iAddressFamily;
+  int32_t iProtocol;
+};
+
+struct NtBlob {
+  uint32_t cbSize;
+  uint8_t pBlobData;
+};
+
+struct NtCsAddrInfo {
+  struct NtSocketAddress LocalAddr;
+  struct NtSocketAddress RemoteAddr;
+  int32_t iSocketType;
+  int32_t iProtocol;
+};
+
+struct NtWsaQuerySet {
+  uint32_t dwSize; /* of this */
+  char16_t *lpszServiceInstanceName;
+  struct NtGuid *lpServiceClassId;
+  struct NtWsaVersion *lpVersion;
+  char16_t *lpszComment;
+  uint32_t dwNameSpace;
+  struct NtGuid *lpNSProviderId;
+  char16_t *lpszContext;
+  uint32_t dwNumberOfProtocols;
+  struct NtAfProtocols *lpafpProtocols /*[dwNumberOfProtocols]*/;
+  char16_t *lpszQueryString;
+  uint32_t dwNumberOfCsAddrs;
+  struct NtCsAddrInfo *lpcsaBuffer /*[dwNumberOfCsAddrs]*/;
+  uint32_t dwOutputFlags;
+  struct NtBlob *lpBlob;
+};
+
+struct NtWsaNamespaceInfoEx {
+  struct NtGuid NSProviderId;
+  uint32_t dwNameSpace;
+  bool32 fActive;
+  uint32_t dwVersion;
+  char16_t *lpszIdentifier;
+  struct NtBlob *ProviderSpecific;
+};
+
+struct NtWsansClassInfo {
+  char16_t *lpszName;
+  uint32_t dwNameSpace;
+  uint32_t dwValueType;
+  uint32_t dwValueSize;
+  void *lpValue;
+};
+
+struct NtWsaServiceClassInfo {
+  struct NtGuid *lpServiceClassId;
+  char16_t *lpszServiceClassName;
+  uint32_t dwCount;
+  struct NtWsansClassInfo *lpClassInfos;
+};
+
+struct NtWsaNetworkEvents {
+  int32_t lNetworkEvents;
+  int32_t iErrorCode[10];
+};
+
+struct NtTransmitFileBuffers {
+  void *Head;
+  uint32_t HeadLength;
+  void *Tail;
+  uint32_t TailLength;
+};
+
+typedef int (*NtConditionProc)(
+    const struct NtIovec *lpCallerId, const struct NtIovec *lpCallerData,
+    struct NtQos *inout_lpSQOS, struct NtQos *inout_lpGQOS,
+    const struct NtIovec *lpCalleeId, const struct NtIovec *lpCalleeData,
+    uint32_t *out_group, const uint32_t *dwCallbackData);
+
+typedef void (*NtWsaOverlappedCompletionRoutine)(
+    uint32_t dwError, uint32_t cbTransferred,
+    const struct NtOverlapped *lpOverlapped, uint32_t dwFlags);
+
+struct NtWsaCompletion {
+  int Type;
+  union {
+    struct {
+      int64_t hWnd;
+      uint32_t uMsg;
+      uintptr_t context;
+    } WindowMessage;
+    struct {
+      struct NtOverlapped *lpOverlapped;
+    } Event;
+    struct {
+      struct NtOverlapped *lpOverlapped;
+      NtWsaOverlappedCompletionRoutine lpfnCompletionProc;
+    } Apc;
+    struct {
+      struct NtOverlapped *lpOverlapped;
+      int64_t hPort;
+      uint32_t Key;
+    } Port;
+  } Parameters;
+};
+
+struct NtFdSet {
+  uint32_t fd_count;
+  int64_t fd_array[64];
+};
+
+/**
+ * Winsock2 prototypes.
+ *
+ * @note Some of the functions exported by WS2_32.DLL, e.g. bind(),
+ *       overlap with the names used by System V. Prototypes for these
+ *       functions are declared within their respective wrappers.
+ */
+
+int32_t WSAStartup(uint16_t wVersionRequested, struct NtWsaData *lpWSAData)
+    paramsnonnull() nodiscard;
+
+int WSACleanup(void);
+int WSAGetLastError(void);
+void WSASetLastError(int);
+
+int __sys_bind_nt(uint64_t, const void *, int);
+int __sys_closesocket_nt(uint64_t);
+int __sys_getpeername_nt(uint64_t, void *, uint32_t *);
+int __sys_getsockname_nt(uint64_t, void *, uint32_t *);
+int __sys_getsockopt_nt(uint64_t, int, int, void *, uint32_t *);
+int __sys_ioctlsocket_nt(uint64_t, int32_t, uint32_t *);
+int __sys_listen_nt(uint64_t, int);
+int __sys_setsockopt_nt(uint64_t, int, int, const void *, int);
+int __sys_shutdown_nt(uint64_t, int);
+int __sys_select_nt(int, struct NtFdSet *, struct NtFdSet *, struct NtFdSet *,
+                    struct NtTimeval *);
+
+uint64_t WSASocket(int af, int type, int protocol,
+                   const struct NtWsaProtocolInfo *opt_lpProtocolInfo,
+                   const uint32_t opt_group, uint32_t dwFlags) nodiscard;
+
+int WSAConnect(uint64_t s, const struct sockaddr *name, const int namelen,
+               const struct NtIovec *opt_lpCallerData,
+               struct NtIovec *opt_out_lpCalleeData,
+               const struct NtQos *opt_lpSQOS, const struct NtQos *opt_lpGQOS)
+    paramsnonnull((2));
+
+bool32 WSAConnectByName(uint64_t s, const char16_t *nodename,
+                        const char16_t *servicename,
+                        uint32_t *opt_inout_LocalAddressLength,
+                        struct sockaddr *out_LocalAddress,
+                        uint32_t *opt_inout_RemoteAddressLength,
+                        struct sockaddr *out_RemoteAddress,
+                        const struct NtTimeval *opt_timeout,
+                        struct NtOverlapped *__Reserved) paramsnonnull((2, 3));
+
+bool32 WSAConnectByList(uint64_t s,
+                        const struct NtSocketAddressList *SocketAddress,
+                        uint32_t *opt_inout_LocalAddressLength,
+                        struct sockaddr *out_LocalAddress,
+                        uint32_t *opt_inout_RemoteAddressLength,
+                        struct sockaddr *out_RemoteAddress,
+                        const struct NtTimeval *opt_timeout,
+                        struct NtOverlapped *__Reserved) paramsnonnull((2));
+
+int64_t WSAAccept(uint64_t s, struct sockaddr *out_addr,
+                  int32_t *opt_inout_addrlen,
+                  const NtConditionProc opt_lpfnCondition,
+                  const uint32_t *opt_dwCallbackData)
+    paramsnonnull((2)) nodiscard;
+
+int WSASend(uint64_t s, const struct NtIovec *lpBuffers, uint32_t dwBufferCount,
+            uint32_t *opt_out_lpNumberOfBytesSent, uint32_t dwFlags,
+            struct NtOverlapped *opt_inout_lpOverlapped,
+            const NtWsaOverlappedCompletionRoutine opt_lpCompletionRoutine)
+    paramsnonnull((2));
+
+int WSASendMsg(int64_t Handle, const struct NtMsgHdr *lpMsg, uint32_t dwFlags,
+               uint32_t *opt_out_lpNumberOfBytesSent,
+               struct NtOverlapped *opt_inout_lpOverlapped,
+               const NtWsaOverlappedCompletionRoutine opt_lpCompletionRoutine)
+    paramsnonnull((2));
+
+int WSASendTo(uint64_t s, const struct NtIovec *lpBuffers,
+              uint32_t dwBufferCount,
+              uint32_t *opt_out_lpNumberOfBytesSent /* opt if !overlapped */,
+              uint32_t dwFlags, const void *opt_tosockaddr,
+              int32_t tosockaddrlen,
+              struct NtOverlapped *opt_inout_lpOverlapped,
+              const NtWsaOverlappedCompletionRoutine opt_lpCompletionRoutine)
+    paramsnonnull((2));
+
+int WSAPoll(struct sys_pollfd_nt *inout_fdArray, uint32_t nfds,
+            signed timeout_ms) paramsnonnull();
+
+int WSARecv(uint64_t s, const struct NtIovec *out_lpBuffers,
+            uint32_t dwBufferCount, uint32_t *opt_out_lpNumberOfBytesRecvd,
+            uint32_t *inout_lpFlags,
+            struct NtOverlapped *opt_inout_lpOverlapped,
+            const NtWsaOverlappedCompletionRoutine opt_lpCompletionRoutine)
+    paramsnonnull((2, 5));
+
+int WSARecvFrom(uint64_t s, const struct NtIovec *out_lpBuffers,
+                uint32_t dwBufferCount, uint32_t *opt_out_lpNumberOfBytesRecvd,
+                uint32_t *inout_lpFlags, void *out_fromsockaddr,
+                uint32_t *inout_fromsockaddrlen,
+                struct NtOverlapped *opt_inout_lpOverlapped,
+                const NtWsaOverlappedCompletionRoutine opt_lpCompletionRoutine)
+    paramsnonnull((2, 5));
+
+int WSARecvDisconnect(uint64_t s,
+                      const struct NtIovec *opt_lpInboundDisconnectData);
+
+int WSADuplicateSocket(uint64_t s, uint32_t dwProcessId,
+                       struct NtWsaProtocolInfo *out_lpProtocolInfo)
+    paramsnonnull((3));
+
+int WSAIoctl(uint64_t s, uint32_t dwIoControlCode, const void *lpvInBuffer,
+             uint32_t cbInBuffer, void *out_lpvOutBuffer, uint32_t cbOutBuffer,
+             uint32_t *out_lpcbBytesReturned,
+             struct NtOverlapped *opt_inout_lpOverlapped,
+             const NtWsaOverlappedCompletionRoutine opt_lpCompletionRoutine)
+    paramsnonnull((5, 7));
+
+int WSANSPIoctl(int64_t hLookup, uint32_t dwControlCode,
+                const void *lpvInBuffer, uint32_t cbInBuffer,
+                void *out_lpvOutBuffer, uint32_t cbOutBuffer,
+                uint32_t *out_lpcbBytesReturned,
+                const struct NtWsaCompletion *opt_lpCompletion)
+    paramsnonnull((3, 5, 7));
+
+int64_t WSACreateEvent(void) nodiscard;
+bool32 WSACloseEvent(const int64_t hEvent);
+bool32 WSAResetEvent(const int64_t hEvent);
+bool32 WSASetEvent(const int64_t hEvent);
+
+int WSAEventSelect(uint64_t s, const int64_t opt_hEventObject,
+                   long lNetworkEvents);
+
+uint32_t WSAWaitForMultipleEvents(uint32_t cEvents, const int64_t *lphEvents,
+                                  bool32 fWaitAll, uint32_t dwTimeout_ms,
+                                  bool32 fAlertable) paramsnonnull();
+
+int WSAEnumNetworkEvents(uint64_t s, const int64_t hEventObject,
+                         struct NtWsaNetworkEvents *out_lpNetworkEvents)
+    paramsnonnull();
+
+bool32 WSAGetOverlappedResult(uint64_t s,
+                              const struct NtOverlapped *lpOverlapped,
+                              uint32_t *out_lpcbTransfer, bool32 fWait,
+                              uint32_t *out_lpdwFlags) paramsnonnull();
+
+int WSAEnumProtocols(const int32_t *opt_lpiProtocols,
+                     struct NtWsaProtocolInfo *out_lpProtocolBuffer,
+                     uint32_t *inout_lpdwBufferLength) paramsnonnull();
+
+bool32 WSAGetQOSByName(uint64_t s, const struct NtIovec *lpQOSName,
+                       struct NtQos *out_lpQOS) paramsnonnull();
+
+uint64_t WSAJoinLeaf(uint64_t s, const struct sockaddr *name, const int namelen,
+                     const struct NtIovec *opt_lpCallerData,
+                     struct NtIovec *opt_out_lpCalleeData,
+                     const struct NtQos *opt_lpSQOS,
+                     const struct NtQos *opt_lpGQOS, uint32_t dwFlags)
+    paramsnonnull((2, 4));
+
+int WSALookupServiceBegin(const struct NtWsaQuerySet *lpqsRestrictions,
+                          uint32_t dwControlFlags, int64_t *out_lphLookup)
+    paramsnonnull();
+
+int WSALookupServiceNext(const int64_t hLookup, uint32_t dwControlFlags,
+                         uint32_t *inout_lpdwBufferLength,
+                         struct NtWsaQuerySet *out_lpqsResults) paramsnonnull();
+
+int WSALookupServiceEnd(int64_t hLookup);
+
+int WSAAddressToString(const struct sockaddr *lpsaAddress,
+                       uint32_t dwAddressLength,
+                       const struct NtWsaProtocolInfo *opt_lpProtocolInfo,
+                       char16_t *out_lpszAddressString,
+                       uint32_t *inout_lpdwAddressStringLength)
+    paramsnonnull((1, 4, 5));
+
+int WSAStringToAddress(const char16_t *AddressString, int AddressFamily,
+                       const struct NtWsaProtocolInfo *opt_lpProtocolInfo,
+                       struct sockaddr *out_lpAddress,
+                       int *inout_lpAddressLength) paramsnonnull((1, 3, 4));
+
+int WSAEnumNameSpaceProvidersEx(uint32_t *inout_lpdwBufferLength,
+                                struct NtWsaNamespaceInfoEx *out_lpnspBuffer)
+    paramsnonnull();
+
+int WSAProviderConfigChange(
+    int64_t *inout_lpNotificationHandle,
+    struct NtOverlapped *opt_inout_lpOverlapped,
+    NtWsaOverlappedCompletionRoutine opt_lpCompletionRoutine)
+    paramsnonnull((1));
+
+int WSAInstallServiceClass(
+    const struct NtWsaServiceClassInfo *lpServiceClassInfo) paramsnonnull();
+
+int WSARemoveServiceClass(const struct NtGuid *lpServiceClassId)
+    paramsnonnull();
+
+int WSAGetServiceClassInfo(const struct NtGuid *lpProviderId,
+                           const struct NtGuid *lpServiceClassId,
+                           uint32_t *inout_lpdwBufSize,
+                           struct NtWsaServiceClassInfo *out_lpServiceClassInfo)
+    paramsnonnull((1, 2, 3));
+
+int WSASetService(const struct NtWsaQuerySet *lpqsRegInfo, int essoperation,
+                  uint32_t dwControlFlags) paramsnonnull();
+
+int /* success==0 */ WSAGetServiceClassNameByClassId(
+    const struct NtGuid *lpServiceClassId, char16_t *out_lpszServiceClassName,
+    uint32_t *inout_lpdwBufferLength) paramsnonnull();
+
+bool32 TransmitFile(int64_t hSocket, int64_t hFile,
+                    uint32_t opt_nNumberOfBytesToWrite,
+                    uint32_t opt_nNumberOfBytesPerSend,
+                    struct NtOverlapped *opt_inout_lpOverlapped,
+                    const struct NtTransmitFileBuffers *opt_lpTransmitBuffers,
+                    uint32_t dwReserved);
+
+bool32 AcceptEx(int64_t sListenSocket, int64_t sAcceptSocket,
+                void *out_lpOutputBuffer /*[recvlen+local+remoteaddrlen]*/,
+                uint32_t dwReceiveDataLength, uint32_t dwLocalAddressLength,
+                uint32_t dwRemoteAddressLength, uint32_t *out_lpdwBytesReceived,
+                struct NtOverlapped *inout_lpOverlapped);
+
+void GetAcceptExSockaddrs(
+    const void *lpOutputBuffer /*[recvsize+addrsize+addrlen]*/,
+    uint32_t dwReceiveDataLength, uint32_t dwLocalAddressLength,
+    uint32_t dwRemoteAddressLength,
+    struct sockaddr **out_LocalSockaddr /*[*LocalSockaddrLength]*/,
+    int *out_LocalSockaddrLength,
+    struct sockaddr **out_RemoteSockaddr /*[*RemoteSockaddrLength]*/,
+    int *out_RemoteSockaddrLength);
+
+bool32 ConnectEx(int64_t s, const struct sockaddr *name, int namelen,
+                 const void *opt_lpSendBuffer, uint32_t dwSendDataLength,
+                 uint32_t *out_lpdwBytesSent,
+                 struct NtOverlapped *inout_lpOverlapped);
+
+bool32 DisconnectEx(int64_t s, struct NtOverlapped *inout_opt_lpOverlapped,
+                    uint32_t dwFlags, uint32_t dwReserved);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/ohmyplus/vector.h */
+
+#define COSMOPOLITAN_LIBC_OHMYPLUS_VECTOR_H_
+#ifdef __cplusplus
+extern "C" {
+void __vector_reserve(size_t, size_t, intptr_t **, size_t *);
+} /* extern c */
+namespace std {
+
+template <class T>
+class vector {
+ public:
+  vector() : data_(NULL), size_(0), toto_(0) {
+  }
+  vector(size_t n) : data_(NULL), size_(n), toto_(0) {
+    VectorReserve(n);
+  }
+  size_t size() const {
+    return size_;
+  }
+  size_t capacity() const {
+    return toto_;
+  }
+  T &front() {
+    return data_[0];
+  }
+  T &back() {
+    return data_[size_ - 1];
+  }
+  void clear() {
+    size_ = 0;
+  }
+  void reserve(size_t n) {
+    VectorReserve(n);
+  }
+  void resize(size_t n) {
+    reserve((size_ = n));
+  }
+  bool empty() const {
+    return !size_;
+  }
+  T &operator[](size_t i) {
+    return data_[i];
+  }
+
+ private:
+  T *data_;
+  size_t size_;
+  size_t toto_;
+  void VectorReserve(size_t n) {
+    __vector_reserve(n, sizeof(T), (intptr_t **)&data_, &toto_);
+  }
+};
+
+};     /* namespace std */
+#endif /* __cplusplus */
+
+
+/*!BEGIN libc/rand/rand.h */
+
+#define COSMOPOLITAN_LIBC_RAND_RAND_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § random                                                    ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define RAND_MAX __INT_MAX__ /* only applies to rand() */
+void srand(uint64_t) nothrow nocallback;  /* seeds rand() only      */
+int rand(void) nothrow nocallback;        /* ≥0 unseeded lcg prng   */
+uint32_t rand32(void) nothrow nocallback; /* random as possible rng */
+uint64_t rand64(void) nothrow nocallback; /* random as possible rng */
+double poz(double);                       /* verify our claims      */
+double pochisq(double, int);
+void rt_init(int);
+void rt_add(void *, int);
+void rt_end(double *, double *, double *, double *, double *);
+void *rngset(void *, size_t, uint64_t (*)(void), size_t) paramsnonnull();
+char *strfry(char *);
+int getentropy(void *, size_t);
+ssize_t getrandom(void *, size_t, unsigned);
+int devrand(void *, size_t);
+int64_t winrandish(void);
+uint64_t rdrand(void);
+uint64_t rdseed(void);
+float randf(void);
+char *initstate(unsigned, char *, size_t);
+char *setstate(char *);
+long random(void);
+void srandom(unsigned);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/rand/xorshift.h */
+
+#define COSMOPOLITAN_LIBC_RAND_XORSHIFT_H_
+
+#define kMarsagliaXorshift64Seed 88172645463325252
+#define kMarsagliaXorshift32Seed 2463534242
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+uint32_t MarsagliaXorshift32(uint32_t[hasatleast 1]);
+uint64_t MarsagliaXorshift64(uint64_t[hasatleast 1]);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/runtime/buffer.h */
+
+#define COSMOPOLITAN_LIBC_RUNTIME_BUFFER_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct GuardedBuffer {
+  void *p;
+};
+
+void *balloc(struct GuardedBuffer *, unsigned, size_t);
+void bfree(struct GuardedBuffer *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/runtime/carsort.h */
+
+#define COSMOPOLITAN_LIBC_RUNTIME_CARSORT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void carsort100(size_t, int32_t (*)[2]) paramsnonnull() nocallback nothrow;
+void carsort1000(size_t, int32_t (*)[2]) paramsnonnull() nocallback nothrow;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/runtime/gc.h */
+
+#define COSMOPOLITAN_LIBC_RUNTIME_GC_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void *_gc(void *) hidden;
+void *_defer(void *, void *) hidden;
+void __defer(struct StackFrame *, void *, void *) hidden;
+void __deferer(struct StackFrame *, void *, void *) hidden;
+void _gclongjmp(jmp_buf, int) nothrow wontreturn;
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define _gc(THING) _defer((void *)_weakfree, (void *)(THING))
+#define _defer(FN, ARG)                                                \
+  ({                                                                   \
+    autotype(ARG) Arg = (ARG);                                         \
+    /* prevent weird opts like tail call */                            \
+    asm volatile("" : "+g"(Arg) : : "memory");                         \
+    __defer((struct StackFrame *)__builtin_frame_address(0), FN, Arg); \
+    asm volatile("" : "+g"(Arg) : : "memory");                         \
+    Arg;                                                               \
+  })
+#endif /* defined(__GNUC__) && !defined(__STRICT_ANSI__) */
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/runtime/interruptiblecall.h */
+
+#define COSMOPOLITAN_LIBC_RUNTIME_INTERRUPTIBLECALL_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct InterruptibleCall {
+  struct InterruptibleCall *prev;
+  intptr_t returnval;
+  int sig;
+  int flags;
+  jmp_buf jb;
+  struct sigaction sa_new;
+  struct sigaction sa_old;
+};
+
+intptr_t interruptiblecall(struct InterruptibleCall *state,
+                           intptr_t callback(intptr_t p1, intptr_t p2,
+                                             intptr_t p3, intptr_t p4),
+                           intptr_t p1, intptr_t p2, intptr_t p3, intptr_t p4);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/runtime/memtrack.h */
+
+#define COSMOPOLITAN_LIBC_RUNTIME_MEMTRACK_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#define _kAutomapStart  0x0000100080000000 /* asan can't spread its poison */
+#define _kAutomapSize   0x00000fff80000000 /* beyond the above mem address */
+#define _kFixedmapStart 0x0000200000000000
+
+/*
+ * TODO: Why can't we allocate addresses above 4GB on Windows 7 x64?
+ * https://github.com/jart/cosmopolitan/issues/19
+ */
+#define MEMTRACK_ADDRESS(NORMAL, WIN7) \
+  (!(IsWindows() && NtGetVersion() < kNtVersionWindows10) ? NORMAL : WIN7)
+#define kAutomapStart  MEMTRACK_ADDRESS(_kAutomapStart, 0x10000000)
+#define kAutomapSize   MEMTRACK_ADDRESS(_kAutomapSize, 0x40000000)
+#define kFixedmapStart MEMTRACK_ADDRESS(_kFixedmapStart, 0x40000000)
+
+struct MemoryIntervals {
+  long i;
+  struct MemoryInterval {
+    int x;
+    int y;
+    long h;
+    int prot;
+    int flags;
+  } p[128];
+};
+
+extern struct MemoryIntervals _mmi;
+
+unsigned FindMemoryInterval(const struct MemoryIntervals *, int) nosideeffect;
+bool AreMemoryIntervalsOk(const struct MemoryIntervals *) nosideeffect;
+void PrintMemoryIntervals(int, const struct MemoryIntervals *);
+int TrackMemoryInterval(struct MemoryIntervals *, int, int, long, int, int);
+int ReleaseMemoryIntervals(struct MemoryIntervals *, int, int,
+                           void (*)(struct MemoryIntervals *, int, int));
+void ReleaseMemoryNt(struct MemoryIntervals *, int, int);
+int UntrackMemoryIntervals(void *, size_t);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/runtime/sysconf.h */
+
+#define COSMOPOLITAN_LIBC_RUNTIME_SYSCONF_H_
+
+
+/*!BEGIN libc/sysv/consts/auxv.h */
+
+#define COSMOPOLITAN_LIBC_CALLS_AUXV_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long AT_BASE;
+extern const long AT_BASE_PLATFORM;
+extern const long AT_CLKTCK;
+extern const long AT_DCACHEBSIZE;
+extern const long AT_EGID;
+extern const long AT_ENTRY;
+extern const long AT_EUID;
+extern const long AT_EXECFD;
+extern const long AT_EXECFN;
+extern const long AT_FLAGS;
+extern const long AT_GID;
+extern const long AT_HWCAP2;
+extern const long AT_HWCAP;
+extern const long AT_ICACHEBSIZE;
+extern const long AT_NOTELF;
+extern const long AT_NO_AUTOMOUNT;
+extern const long AT_OSRELDATE;
+extern const long AT_PAGESZ;
+extern const long AT_PHDR;
+extern const long AT_PHENT;
+extern const long AT_PHNUM;
+extern const long AT_PLATFORM;
+extern const long AT_RANDOM;
+extern const long AT_SECURE;
+extern const long AT_SYSINFO_EHDR;
+extern const long AT_UCACHEBSIZE;
+extern const long AT_UID;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define AT_BASE          SYMBOLIC(AT_BASE)
+#define AT_BASE_PLATFORM SYMBOLIC(AT_BASE_PLATFORM)
+#define AT_CLKTCK        SYMBOLIC(AT_CLKTCK)
+#define AT_DCACHEBSIZE   SYMBOLIC(AT_DCACHEBSIZE)
+#define AT_EGID          SYMBOLIC(AT_EGID)
+#define AT_ENTRY         SYMBOLIC(AT_ENTRY)
+#define AT_EUID          SYMBOLIC(AT_EUID)
+#define AT_EXECFD        SYMBOLIC(AT_EXECFD)
+#define AT_EXECFN        SYMBOLIC(AT_EXECFN)
+#define AT_FLAGS         SYMBOLIC(AT_FLAGS)
+#define AT_GID           SYMBOLIC(AT_GID)
+#define AT_HWCAP         SYMBOLIC(AT_HWCAP)
+#define AT_HWCAP2        SYMBOLIC(AT_HWCAP2)
+#define AT_ICACHEBSIZE   SYMBOLIC(AT_ICACHEBSIZE)
+#define AT_NOTELF        SYMBOLIC(AT_NOTELF)
+#define AT_NO_AUTOMOUNT  SYMBOLIC(AT_NO_AUTOMOUNT)
+#define AT_OSRELDATE     SYMBOLIC(AT_OSRELDATE)
+#define AT_PAGESZ        SYMBOLIC(AT_PAGESZ)
+#define AT_PHDR          SYMBOLIC(AT_PHDR)
+#define AT_PHENT         SYMBOLIC(AT_PHENT)
+#define AT_PHNUM         SYMBOLIC(AT_PHNUM)
+#define AT_PLATFORM      SYMBOLIC(AT_PLATFORM)
+#define AT_RANDOM        SYMBOLIC(AT_RANDOM)
+#define AT_SECURE        SYMBOLIC(AT_SECURE)
+#define AT_SYSINFO_EHDR  SYMBOLIC(AT_SYSINFO_EHDR)
+#define AT_UCACHEBSIZE   SYMBOLIC(AT_UCACHEBSIZE)
+#define AT_UID           SYMBOLIC(AT_UID)
+
+
+#define _SC_ARG_MAX   0
+#define _SC_CLK_TCK   2
+#define _SC_PAGESIZE  30
+#define _SC_PAGE_SIZE 30
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+long sysconf(int);
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define sysconf(X) __sysconf(X)
+forceinline long __sysconf(int thing) {
+  switch (thing) {
+    case _SC_ARG_MAX:
+      return ARG_MAX;
+    case _SC_CLK_TCK: {
+      extern const long __AT_CLKTCK asm("AT_CLKTCK");
+      long res = getauxval(__AT_CLKTCK);
+      if (!res) res = 100;
+      return res;
+    }
+    case _SC_PAGESIZE:
+      return FRAMESIZE;
+    default:
+      return -1;
+  }
+}
+#endif /* GNU && !ANSI */
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sock/epoll.h */
+
+#define COSMOPOLITAN_LIBC_SOCK_WEPOLL_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+typedef union epoll_data {
+  void *ptr;
+  int fd;
+  uint32_t u32;
+  uint64_t u64;
+} epoll_data_t;
+
+struct thatispacked epoll_event {
+  uint32_t events;
+  epoll_data_t data;
+};
+
+int epoll_create(int);
+int epoll_create1(int);
+int epoll_ctl(int, int, int, struct epoll_event *);
+int epoll_wait(int, struct epoll_event *, int, int);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sock/select.h */
+
+#define COSMOPOLITAN_LIBC_SOCK_SELECT_H_
+
+#define FD_SETSIZE 1024 /* it's 64 on windows */
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+typedef struct fd_set {
+  uint64_t fds_bits[FD_SETSIZE / 64];
+} fd_set;
+
+#define FD_ISSET(FD, SET) (((SET)->fds_bits[(FD) >> 6] >> ((FD)&63)) & 1)
+#define FD_SET(FD, SET)   ((SET)->fds_bits[(FD) >> 6] |= 1ull << ((FD)&63))
+#define FD_CLR(FD, SET)   ((SET)->fds_bits[(FD) >> 6] &= ~(1ull << ((FD)&63)))
+#define FD_ZERO(SET)      memset((SET)->fds_bits, 0, sizeof((SET)->fds_bits))
+
+int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/stdio/spawn.h */
+
+#define COSMOPOLITAN_LIBC_STDIO_SPAWN_H_
+
+#define POSIX_SPAWN_RESETIDS      0x01
+#define POSIX_SPAWN_SETPGROUP     0x02
+#define POSIX_SPAWN_SETSIGDEF     0x04
+#define POSIX_SPAWN_SETSIGMASK    0x08
+#define POSIX_SPAWN_SETSCHEDPARAM 0x10
+#define POSIX_SPAWN_SETSCHEDULER  0x20
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+typedef char *posix_spawn_file_actions_t;
+typedef struct _posix_spawnattr posix_spawnattr_t;
+
+int posix_spawn(int *, const char *, const posix_spawn_file_actions_t *,
+                const posix_spawnattr_t *, char *const[], char *const[]);
+int posix_spawnp(int *, const char *, const posix_spawn_file_actions_t *,
+                 const posix_spawnattr_t *, char *const[], char *const[]);
+
+int posix_spawn_file_actions_init(posix_spawn_file_actions_t *);
+int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *);
+int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, int);
+int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int, int);
+int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *, int,
+                                     const char *, int, unsigned);
+
+int posix_spawnattr_init(posix_spawnattr_t *);
+int posix_spawnattr_destroy(posix_spawnattr_t *);
+int posix_spawnattr_getflags(const posix_spawnattr_t *, short *);
+int posix_spawnattr_setflags(posix_spawnattr_t *, short);
+int posix_spawnattr_getpgroup(const posix_spawnattr_t *, int *);
+int posix_spawnattr_setpgroup(posix_spawnattr_t *, int);
+int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *, int *);
+int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int);
+int posix_spawnattr_getschedparam(const posix_spawnattr_t *,
+                                  struct sched_param *);
+int posix_spawnattr_setschedparam(posix_spawnattr_t *,
+                                  const struct sched_param *);
+int posix_spawnattr_getsigmask(const posix_spawnattr_t *, sigset_t *);
+int posix_spawnattr_setsigmask(posix_spawnattr_t *, const sigset_t *);
+int posix_spawnattr_getdefault(const posix_spawnattr_t *, sigset_t *);
+int posix_spawnattr_setsigdefault(posix_spawnattr_t *, const sigset_t *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/stdio/stdio_ext.h */
+
+#define COSMOPOLITAN_LIBC_STDIO_STDIO_EXT_H_
+
+#define FSETLOCKING_QUERY    0
+#define FSETLOCKING_INTERNAL 1
+#define FSETLOCKING_BYCALLER 2
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+size_t __fbufsize(FILE *);
+size_t __fpending(FILE *);
+int __flbf(FILE *);
+int __freadable(FILE *);
+int __fwritable(FILE *);
+int __freading(FILE *);
+int __fwriting(FILE *);
+int __fsetlocking(FILE *, int);
+void _flushlbf(void);
+void __fpurge(FILE *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/stdio/temp.h */
+
+#define COSMOPOLITAN_LIBC_STDIO_TEMP_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+nodiscard FILE *tmpfile(void);
+nodiscard int mkstemp(char *);
+nodiscard int mkostemp(char *, unsigned);
+nodiscard int mkstemps(char *, int);
+nodiscard int mkostemps(char *, int, unsigned);
+nodiscard int mkostempsm(char *, int, unsigned, int);
+compatfn char *mktemp(char *);
+
+int mkostempsmi(char *, int, unsigned, uint64_t *, int,
+                int (*)(const char *, int, ...)) hidden nodiscard;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/stdio/unlocked.h */
+
+#define COSMOPOLITAN_LIBC_STDIO_UNLOCKED_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void flockfile(FILE *);
+void funlockfile(FILE *);
+int ftrylockfile(FILE *);
+int getc_unlocked(FILE *) paramsnonnull();
+int getchar_unlocked(void);
+int putc_unlocked(int, FILE *) paramsnonnull();
+int putchar_unlocked(int);
+void clearerr_unlocked(FILE *);
+int feof_unlocked(FILE *);
+int ferror_unlocked(FILE *);
+int fileno_unlocked(FILE *);
+int fflush_unlocked(FILE *);
+int fgetc_unlocked(FILE *);
+int fputc_unlocked(int, FILE *);
+size_t fread_unlocked(void *, size_t, size_t, FILE *);
+size_t fwrite_unlocked(const void *, size_t, size_t, FILE *);
+char *fgets_unlocked(char *, int, FILE *);
+int fputs_unlocked(const char *, FILE *);
+wint_t getwc_unlocked(FILE *);
+wint_t getwchar_unlocked(void);
+wint_t fgetwc_unlocked(FILE *);
+wint_t fputwc_unlocked(wchar_t, FILE *);
+wint_t putwc_unlocked(wchar_t, FILE *);
+wint_t putwchar_unlocked(wchar_t);
+wchar_t *fgetws_unlocked(wchar_t *, int, FILE *);
+int fputws_unlocked(const wchar_t *, FILE *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/str/highwayhash64.h */
+
+#define COSMOPOLITAN_LIBC_STR_HIGHWAYHASH64_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+uint64_t HighwayHash64(const uint8_t *, size_t, const uint64_t[4]);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/str/thompike.h */
+
+#define COSMOPOLITAN_LIBC_STR_THOMPIKE_H_
+
+#define ThomPikeCont(x)     (((x)&0300) == 0200)
+#define ThomPikeByte(x)     ((x) & (((1 << ThomPikeMsb(x)) - 1) | 3))
+#define ThomPikeLen(x)      (7 - ThomPikeMsb(x))
+#define ThomPikeMsb(x)      (((x)&0xff) < 252 ? bsr(~(x)&0xff) : 1)
+#define ThomPikeMerge(x, y) ((x) << 6 | (y)&077)
+
+
+
+/*!BEGIN libc/str/tpenc.h */
+
+#define COSMOPOLITAN_LIBC_STR_TPENC_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+uint64_t tpenc(int32_t) pureconst;
+
+#ifndef __STRICT_ANSI__
+#define tpenc(CODE)            \
+  ({                           \
+    long Edi, Buf;             \
+    asm("call\ttpenc"          \
+        : "=a"(Buf), "=D"(Edi) \
+        : "1"(CODE)            \
+        : "rcx", "rdx", "cc"); \
+    Buf;                       \
+  })
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/str/undeflate.h */
+
+#define COSMOPOLITAN_LIBC_STR_UNDEFLATE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct DeflateState {
+  uint8_t lenlens[19];
+  uint32_t lencodes[19];
+  uint32_t distcodes[32];
+  uint32_t litcodes[288];
+  uint8_t lens[288 + 32];
+};
+
+ssize_t undeflate(void *output, size_t outputsize, void *input,
+                  size_t inputsize, struct DeflateState *ds);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/str/utf16.h */
+
+#define COSMOPOLITAN_LIBC_STR_UTF16_H_
+
+#define UTF16_MASK 0xfc00
+#define UTF16_MOAR 0xd800 /* 0xD800..0xDBFF */
+#define UTF16_CONT 0xdc00 /* 0xDC00..0xDBFF */
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#define IsUcs2(wc)         (((wc)&UTF16_MASK) != UTF16_MOAR)
+#define IsUtf16Cont(wc)    (((wc)&UTF16_MASK) == UTF16_CONT)
+#define MergeUtf16(lo, hi) ((((lo)-0xD800) << 10) + ((hi)-0xDC00) + 0x10000)
+#define EncodeUtf16(wc)                                    \
+  (__builtin_expect(((0x0000 <= (wc) && (wc) <= 0xFFFF) || \
+                     (0xE000 <= (wc) && (wc) <= 0xFFFF)),  \
+                    1)                                     \
+       ? (wc)                                              \
+       : 0x10000 <= (wc) && (wc) <= 0x10FFFF               \
+             ? (((((wc)-0x10000) >> 10) + 0xD800) |        \
+                ((((wc)-0x10000) & 1023) + 0xDC00) << 16)  \
+             : 0xFFFD)
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/errfuns.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_ERRFUNS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+/**
+ * @fileoverview Optimized error return paths.
+ *
+ * Saying this:
+ *
+ *     return einval();
+ *
+ * Instead of this:
+ *
+ *     errno = EINVAL;
+ *     return -1;
+ *
+ * Allows the compiler to generate 11 fewer bytes of code each time.
+ *
+ * @return always -1
+ * @see libc/sysv/errfuns.inc (for implementation)
+ */
+
+intptr_t einval(void) relegated;
+intptr_t eperm(void) relegated;
+intptr_t enoent(void) relegated;
+intptr_t esrch(void) relegated;
+intptr_t eintr(void) relegated;
+intptr_t eio(void) relegated;
+intptr_t enxio(void) relegated;
+intptr_t e2big(void) relegated;
+intptr_t enoexec(void) relegated;
+intptr_t ebadf(void) relegated;
+intptr_t echild(void) relegated;
+intptr_t eagain(void) relegated;
+intptr_t enomem(void) relegated;
+intptr_t eacces(void) relegated;
+intptr_t efault(void) relegated;
+intptr_t enotblk(void) relegated;
+intptr_t ebusy(void) relegated;
+intptr_t eexist(void) relegated;
+intptr_t exdev(void) relegated;
+intptr_t enodev(void) relegated;
+intptr_t enotdir(void) relegated;
+intptr_t eisdir(void) relegated;
+intptr_t enfile(void) relegated;
+intptr_t emfile(void) relegated;
+intptr_t enotty(void) relegated;
+intptr_t enotsup(void) relegated;
+intptr_t etxtbsy(void) relegated;
+intptr_t efbig(void) relegated;
+intptr_t enospc(void) relegated;
+intptr_t espipe(void) relegated;
+intptr_t erofs(void) relegated;
+intptr_t emlink(void) relegated;
+intptr_t epipe(void) relegated;
+intptr_t edom(void) relegated;
+intptr_t erange(void) relegated;
+intptr_t edeadlk(void) relegated;
+intptr_t enametoolong(void) relegated;
+intptr_t enolck(void) relegated;
+intptr_t enosys(void) relegated;
+intptr_t enotempty(void) relegated;
+intptr_t eloop(void) relegated;
+intptr_t enomsg(void) relegated;
+intptr_t eidrm(void) relegated;
+intptr_t echrng(void) relegated;
+intptr_t el2nsync(void) relegated;
+intptr_t el3hlt(void) relegated;
+intptr_t el3rst(void) relegated;
+intptr_t elnrng(void) relegated;
+intptr_t eunatch(void) relegated;
+intptr_t enocsi(void) relegated;
+intptr_t el2hlt(void) relegated;
+intptr_t ebade(void) relegated;
+intptr_t ebadr(void) relegated;
+intptr_t exfull(void) relegated;
+intptr_t enoano(void) relegated;
+intptr_t ebadrqc(void) relegated;
+intptr_t ebadslt(void) relegated;
+intptr_t enostr(void) relegated;
+intptr_t enodata(void) relegated;
+intptr_t etime(void) relegated;
+intptr_t enosr(void) relegated;
+intptr_t enonet(void) relegated;
+intptr_t enopkg(void) relegated;
+intptr_t eremote(void) relegated;
+intptr_t enolink(void) relegated;
+intptr_t eadv(void) relegated;
+intptr_t esrmnt(void) relegated;
+intptr_t ecomm(void) relegated;
+intptr_t eproto(void) relegated;
+intptr_t emultihop(void) relegated;
+intptr_t edotdot(void) relegated;
+intptr_t ebadmsg(void) relegated;
+intptr_t eoverflow(void) relegated;
+intptr_t enotuniq(void) relegated;
+intptr_t ebadfd(void) relegated;
+intptr_t eremchg(void) relegated;
+intptr_t elibacc(void) relegated;
+intptr_t elibbad(void) relegated;
+intptr_t elibscn(void) relegated;
+intptr_t elibmax(void) relegated;
+intptr_t elibexec(void) relegated;
+intptr_t eilseq(void) relegated;
+intptr_t erestart(void) relegated;
+intptr_t estrpipe(void) relegated;
+intptr_t eusers(void) relegated;
+intptr_t enotsock(void) relegated;
+intptr_t edestaddrreq(void) relegated;
+intptr_t emsgsize(void) relegated;
+intptr_t eprototype(void) relegated;
+intptr_t enoprotoopt(void) relegated;
+intptr_t eprotonosupport(void) relegated;
+intptr_t esocktnosupport(void) relegated;
+intptr_t eopnotsupp(void) relegated;
+intptr_t epfnosupport(void) relegated;
+intptr_t eafnosupport(void) relegated;
+intptr_t eaddrinuse(void) relegated;
+intptr_t eaddrnotavail(void) relegated;
+intptr_t enetdown(void) relegated;
+intptr_t enetunreach(void) relegated;
+intptr_t enetreset(void) relegated;
+intptr_t econnaborted(void) relegated;
+intptr_t econnreset(void) relegated;
+intptr_t enobufs(void) relegated;
+intptr_t eisconn(void) relegated;
+intptr_t enotconn(void) relegated;
+intptr_t eshutdown(void) relegated;
+intptr_t etoomanyrefs(void) relegated;
+intptr_t etimedout(void) relegated;
+intptr_t econnrefused(void) relegated;
+intptr_t ehostdown(void) relegated;
+intptr_t ehostunreach(void) relegated;
+intptr_t ealready(void) relegated;
+intptr_t einprogress(void) relegated;
+intptr_t estale(void) relegated;
+intptr_t euclean(void) relegated;
+intptr_t enotnam(void) relegated;
+intptr_t enavail(void) relegated;
+intptr_t eisnam(void) relegated;
+intptr_t eremoteio(void) relegated;
+intptr_t edquot(void) relegated;
+intptr_t enomedium(void) relegated;
+intptr_t emediumtype(void) relegated;
+intptr_t ecanceled(void) relegated;
+intptr_t enokey(void) relegated;
+intptr_t ekeyexpired(void) relegated;
+intptr_t ekeyrevoked(void) relegated;
+intptr_t ekeyrejected(void) relegated;
+intptr_t eownerdead(void) relegated;
+intptr_t enotrecoverable(void) relegated;
+intptr_t erfkill(void) relegated;
+intptr_t ehwpoison(void) relegated;
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define __ERRFUN(FUNC)                              \
+  ({                                                \
+    intptr_t NegOne;                                \
+    asm("call\t" FUNC : "=a"(NegOne), "=m"(errno)); \
+    NegOne;                                         \
+  })
+#define einval()          __ERRFUN("einval")
+#define eperm()           __ERRFUN("eperm")
+#define enoent()          __ERRFUN("enoent")
+#define esrch()           __ERRFUN("esrch")
+#define eintr()           __ERRFUN("eintr")
+#define eio()             __ERRFUN("eio")
+#define enxio()           __ERRFUN("enxio")
+#define e2big()           __ERRFUN("e2big")
+#define enoexec()         __ERRFUN("enoexec")
+#define ebadf()           __ERRFUN("ebadf")
+#define echild()          __ERRFUN("echild")
+#define eagain()          __ERRFUN("eagain")
+#define enomem()          __ERRFUN("enomem")
+#define eacces()          __ERRFUN("eacces")
+#define efault()          __ERRFUN("efault")
+#define enotblk()         __ERRFUN("enotblk")
+#define ebusy()           __ERRFUN("ebusy")
+#define eexist()          __ERRFUN("eexist")
+#define exdev()           __ERRFUN("exdev")
+#define enodev()          __ERRFUN("enodev")
+#define enotdir()         __ERRFUN("enotdir")
+#define eisdir()          __ERRFUN("eisdir")
+#define enfile()          __ERRFUN("enfile")
+#define emfile()          __ERRFUN("emfile")
+#define enotty()          __ERRFUN("enotty")
+#define enotsup()         __ERRFUN("enotsup")
+#define etxtbsy()         __ERRFUN("etxtbsy")
+#define efbig()           __ERRFUN("efbig")
+#define enospc()          __ERRFUN("enospc")
+#define espipe()          __ERRFUN("espipe")
+#define erofs()           __ERRFUN("erofs")
+#define emlink()          __ERRFUN("emlink")
+#define epipe()           __ERRFUN("epipe")
+#define edom()            __ERRFUN("edom")
+#define erange()          __ERRFUN("erange")
+#define edeadlk()         __ERRFUN("edeadlk")
+#define enametoolong()    __ERRFUN("enametoolong")
+#define enolck()          __ERRFUN("enolck")
+#define enosys()          __ERRFUN("enosys")
+#define enotempty()       __ERRFUN("enotempty")
+#define eloop()           __ERRFUN("eloop")
+#define enomsg()          __ERRFUN("enomsg")
+#define eidrm()           __ERRFUN("eidrm")
+#define echrng()          __ERRFUN("echrng")
+#define el2nsync()        __ERRFUN("el2nsync")
+#define el3hlt()          __ERRFUN("el3hlt")
+#define el3rst()          __ERRFUN("el3rst")
+#define elnrng()          __ERRFUN("elnrng")
+#define eunatch()         __ERRFUN("eunatch")
+#define enocsi()          __ERRFUN("enocsi")
+#define el2hlt()          __ERRFUN("el2hlt")
+#define ebade()           __ERRFUN("ebade")
+#define ebadr()           __ERRFUN("ebadr")
+#define exfull()          __ERRFUN("exfull")
+#define enoano()          __ERRFUN("enoano")
+#define ebadrqc()         __ERRFUN("ebadrqc")
+#define ebadslt()         __ERRFUN("ebadslt")
+#define enostr()          __ERRFUN("enostr")
+#define enodata()         __ERRFUN("enodata")
+#define etime()           __ERRFUN("etime")
+#define enosr()           __ERRFUN("enosr")
+#define enonet()          __ERRFUN("enonet")
+#define enopkg()          __ERRFUN("enopkg")
+#define eremote()         __ERRFUN("eremote")
+#define enolink()         __ERRFUN("enolink")
+#define eadv()            __ERRFUN("eadv")
+#define esrmnt()          __ERRFUN("esrmnt")
+#define ecomm()           __ERRFUN("ecomm")
+#define eproto()          __ERRFUN("eproto")
+#define emultihop()       __ERRFUN("emultihop")
+#define edotdot()         __ERRFUN("edotdot")
+#define ebadmsg()         __ERRFUN("ebadmsg")
+#define eoverflow()       __ERRFUN("eoverflow")
+#define enotuniq()        __ERRFUN("enotuniq")
+#define ebadfd()          __ERRFUN("ebadfd")
+#define eremchg()         __ERRFUN("eremchg")
+#define elibacc()         __ERRFUN("elibacc")
+#define elibbad()         __ERRFUN("elibbad")
+#define elibscn()         __ERRFUN("elibscn")
+#define elibmax()         __ERRFUN("elibmax")
+#define elibexec()        __ERRFUN("elibexec")
+#define eilseq()          __ERRFUN("eilseq")
+#define erestart()        __ERRFUN("erestart")
+#define estrpipe()        __ERRFUN("estrpipe")
+#define eusers()          __ERRFUN("eusers")
+#define enotsock()        __ERRFUN("enotsock")
+#define edestaddrreq()    __ERRFUN("edestaddrreq")
+#define emsgsize()        __ERRFUN("emsgsize")
+#define eprototype()      __ERRFUN("eprototype")
+#define enoprotoopt()     __ERRFUN("enoprotoopt")
+#define eprotonosupport() __ERRFUN("eprotonosupport")
+#define esocktnosupport() __ERRFUN("esocktnosupport")
+#define eopnotsupp()      __ERRFUN("eopnotsupp")
+#define epfnosupport()    __ERRFUN("epfnosupport")
+#define eafnosupport()    __ERRFUN("eafnosupport")
+#define eaddrinuse()      __ERRFUN("eaddrinuse")
+#define eaddrnotavail()   __ERRFUN("eaddrnotavail")
+#define enetdown()        __ERRFUN("enetdown")
+#define enetunreach()     __ERRFUN("enetunreach")
+#define enetreset()       __ERRFUN("enetreset")
+#define econnaborted()    __ERRFUN("econnaborted")
+#define econnreset()      __ERRFUN("econnreset")
+#define enobufs()         __ERRFUN("enobufs")
+#define eisconn()         __ERRFUN("eisconn")
+#define enotconn()        __ERRFUN("enotconn")
+#define eshutdown()       __ERRFUN("eshutdown")
+#define etoomanyrefs()    __ERRFUN("etoomanyrefs")
+#define etimedout()       __ERRFUN("etimedout")
+#define econnrefused()    __ERRFUN("econnrefused")
+#define ehostdown()       __ERRFUN("ehostdown")
+#define ehostunreach()    __ERRFUN("ehostunreach")
+#define ealready()        __ERRFUN("ealready")
+#define einprogress()     __ERRFUN("einprogress")
+#define estale()          __ERRFUN("estale")
+#define euclean()         __ERRFUN("euclean")
+#define enotnam()         __ERRFUN("enotnam")
+#define enavail()         __ERRFUN("enavail")
+#define eisnam()          __ERRFUN("eisnam")
+#define eremoteio()       __ERRFUN("eremoteio")
+#define edquot()          __ERRFUN("edquot")
+#define enomedium()       __ERRFUN("enomedium")
+#define emediumtype()     __ERRFUN("emediumtype")
+#define ecanceled()       __ERRFUN("ecanceled")
+#define enokey()          __ERRFUN("enokey")
+#define ekeyexpired()     __ERRFUN("ekeyexpired")
+#define ekeyrevoked()     __ERRFUN("ekeyrevoked")
+#define ekeyrejected()    __ERRFUN("ekeyrejected")
+#define eownerdead()      __ERRFUN("eownerdead")
+#define enotrecoverable() __ERRFUN("enotrecoverable")
+#define erfkill()         __ERRFUN("erfkill")
+#define ehwpoison()       __ERRFUN("ehwpoison")
+#endif
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/_posix.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS__POSIX_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long _POSIX_ADVISORY_INFO;
+extern const long _POSIX_AIO_LISTIO_MAX;
+extern const long _POSIX_AIO_MAX;
+extern const long _POSIX_ARG_MAX;
+extern const long _POSIX_ASYNCHRONOUS_IO;
+extern const long _POSIX_BARRIERS;
+extern const long _POSIX_CHILD_MAX;
+extern const long _POSIX_CHOWN_RESTRICTED;
+extern const long _POSIX_CLOCKRES_MIN;
+extern const long _POSIX_CLOCK_SELECTION;
+extern const long _POSIX_CPUTIME;
+extern const long _POSIX_DELAYTIMER_MAX;
+extern const long _POSIX_FSYNC;
+extern const long _POSIX_HOST_NAME_MAX;
+extern const long _POSIX_IPV6;
+extern const long _POSIX_JOB_CONTROL;
+extern const long _POSIX_LINK_MAX;
+extern const long _POSIX_LOGIN_NAME_MAX;
+extern const long _POSIX_MAPPED_FILES;
+extern const long _POSIX_MAX_CANON;
+extern const long _POSIX_MAX_INPUT;
+extern const long _POSIX_MEMLOCK;
+extern const long _POSIX_MEMLOCK_RANGE;
+extern const long _POSIX_MEMORY_PROTECTION;
+extern const long _POSIX_MESSAGE_PASSING;
+extern const long _POSIX_MONOTONIC_CLOCK;
+extern const long _POSIX_MQ_OPEN_MAX;
+extern const long _POSIX_MQ_PRIO_MAX;
+extern const long _POSIX_NAME_MAX;
+extern const long _POSIX_NGROUPS_MAX;
+extern const long _POSIX_NO_TRUNC;
+extern const long _POSIX_OPEN_MAX;
+extern const long _POSIX_PATH_MAX;
+extern const long _POSIX_PIPE_BUF;
+extern const long _POSIX_RAW_SOCKETS;
+extern const long _POSIX_READER_WRITER_LOCKS;
+extern const long _POSIX_REALTIME_SIGNALS;
+extern const long _POSIX_REGEXP;
+extern const long _POSIX_RE_DUP_MAX;
+extern const long _POSIX_RTSIG_MAX;
+extern const long _POSIX_SAVED_IDS;
+extern const long _POSIX_SEMAPHORES;
+extern const long _POSIX_SEM_NSEMS_MAX;
+extern const long _POSIX_SEM_VALUE_MAX;
+extern const long _POSIX_SHARED_MEMORY_OBJECTS;
+extern const long _POSIX_SHELL;
+extern const long _POSIX_SIGQUEUE_MAX;
+extern const long _POSIX_SPAWN;
+extern const long _POSIX_SPIN_LOCKS;
+extern const long _POSIX_SSIZE_MAX;
+extern const long _POSIX_SS_REPL_MAX;
+extern const long _POSIX_STREAM_MAX;
+extern const long _POSIX_SYMLINK_MAX;
+extern const long _POSIX_SYMLOOP_MAX;
+extern const long _POSIX_THREADS;
+extern const long _POSIX_THREAD_ATTR_STACKADDR;
+extern const long _POSIX_THREAD_ATTR_STACKSIZE;
+extern const long _POSIX_THREAD_CPUTIME;
+extern const long _POSIX_THREAD_DESTRUCTOR_ITERATIONS;
+extern const long _POSIX_THREAD_KEYS_MAX;
+extern const long _POSIX_THREAD_PRIORITY_SCHEDULING;
+extern const long _POSIX_THREAD_PROCESS_SHARED;
+extern const long _POSIX_THREAD_SAFE_FUNCTIONS;
+extern const long _POSIX_THREAD_THREADS_MAX;
+extern const long _POSIX_TIMEOUTS;
+extern const long _POSIX_TIMERS;
+extern const long _POSIX_TIMER_MAX;
+extern const long _POSIX_TRACE_EVENT_NAME_MAX;
+extern const long _POSIX_TRACE_NAME_MAX;
+extern const long _POSIX_TRACE_SYS_MAX;
+extern const long _POSIX_TRACE_USER_EVENT_MAX;
+extern const long _POSIX_TTY_NAME_MAX;
+extern const long _POSIX_TZNAME_MAX;
+extern const long _POSIX_V6_LP64_OFF64;
+extern const long _POSIX_V7_LP64_OFF64;
+extern const long _POSIX_VDISABLE;
+extern const long _POSIX_VERSION;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define _POSIX_ADVISORY_INFO         SYMBOLIC(_POSIX_ADVISORY_INFO)
+#define _POSIX_AIO_LISTIO_MAX        SYMBOLIC(_POSIX_AIO_LISTIO_MAX)
+#define _POSIX_AIO_MAX               SYMBOLIC(_POSIX_AIO_MAX)
+#define _POSIX_ARG_MAX               SYMBOLIC(_POSIX_ARG_MAX)
+#define _POSIX_ASYNCHRONOUS_IO       SYMBOLIC(_POSIX_ASYNCHRONOUS_IO)
+#define _POSIX_BARRIERS              SYMBOLIC(_POSIX_BARRIERS)
+#define _POSIX_CHILD_MAX             SYMBOLIC(_POSIX_CHILD_MAX)
+#define _POSIX_CHOWN_RESTRICTED      SYMBOLIC(_POSIX_CHOWN_RESTRICTED)
+#define _POSIX_CLOCKRES_MIN          SYMBOLIC(_POSIX_CLOCKRES_MIN)
+#define _POSIX_CLOCK_SELECTION       SYMBOLIC(_POSIX_CLOCK_SELECTION)
+#define _POSIX_CPUTIME               SYMBOLIC(_POSIX_CPUTIME)
+#define _POSIX_DELAYTIMER_MAX        SYMBOLIC(_POSIX_DELAYTIMER_MAX)
+#define _POSIX_FSYNC                 SYMBOLIC(_POSIX_FSYNC)
+#define _POSIX_HOST_NAME_MAX         SYMBOLIC(_POSIX_HOST_NAME_MAX)
+#define _POSIX_IPV6                  SYMBOLIC(_POSIX_IPV6)
+#define _POSIX_JOB_CONTROL           SYMBOLIC(_POSIX_JOB_CONTROL)
+#define _POSIX_LINK_MAX              SYMBOLIC(_POSIX_LINK_MAX)
+#define _POSIX_LOGIN_NAME_MAX        SYMBOLIC(_POSIX_LOGIN_NAME_MAX)
+#define _POSIX_MAPPED_FILES          SYMBOLIC(_POSIX_MAPPED_FILES)
+#define _POSIX_MAX_CANON             SYMBOLIC(_POSIX_MAX_CANON)
+#define _POSIX_MAX_INPUT             SYMBOLIC(_POSIX_MAX_INPUT)
+#define _POSIX_MEMLOCK               SYMBOLIC(_POSIX_MEMLOCK)
+#define _POSIX_MEMLOCK_RANGE         SYMBOLIC(_POSIX_MEMLOCK_RANGE)
+#define _POSIX_MEMORY_PROTECTION     SYMBOLIC(_POSIX_MEMORY_PROTECTION)
+#define _POSIX_MESSAGE_PASSING       SYMBOLIC(_POSIX_MESSAGE_PASSING)
+#define _POSIX_MONOTONIC_CLOCK       SYMBOLIC(_POSIX_MONOTONIC_CLOCK)
+#define _POSIX_MQ_OPEN_MAX           SYMBOLIC(_POSIX_MQ_OPEN_MAX)
+#define _POSIX_MQ_PRIO_MAX           SYMBOLIC(_POSIX_MQ_PRIO_MAX)
+#define _POSIX_NAME_MAX              SYMBOLIC(_POSIX_NAME_MAX)
+#define _POSIX_NGROUPS_MAX           SYMBOLIC(_POSIX_NGROUPS_MAX)
+#define _POSIX_NO_TRUNC              SYMBOLIC(_POSIX_NO_TRUNC)
+#define _POSIX_OPEN_MAX              SYMBOLIC(_POSIX_OPEN_MAX)
+#define _POSIX_PATH_MAX              SYMBOLIC(_POSIX_PATH_MAX)
+#define _POSIX_PIPE_BUF              SYMBOLIC(_POSIX_PIPE_BUF)
+#define _POSIX_RAW_SOCKETS           SYMBOLIC(_POSIX_RAW_SOCKETS)
+#define _POSIX_READER_WRITER_LOCKS   SYMBOLIC(_POSIX_READER_WRITER_LOCKS)
+#define _POSIX_REALTIME_SIGNALS      SYMBOLIC(_POSIX_REALTIME_SIGNALS)
+#define _POSIX_REGEXP                SYMBOLIC(_POSIX_REGEXP)
+#define _POSIX_RE_DUP_MAX            SYMBOLIC(_POSIX_RE_DUP_MAX)
+#define _POSIX_RTSIG_MAX             SYMBOLIC(_POSIX_RTSIG_MAX)
+#define _POSIX_SAVED_IDS             SYMBOLIC(_POSIX_SAVED_IDS)
+#define _POSIX_SEMAPHORES            SYMBOLIC(_POSIX_SEMAPHORES)
+#define _POSIX_SEM_NSEMS_MAX         SYMBOLIC(_POSIX_SEM_NSEMS_MAX)
+#define _POSIX_SEM_VALUE_MAX         SYMBOLIC(_POSIX_SEM_VALUE_MAX)
+#define _POSIX_SHARED_MEMORY_OBJECTS SYMBOLIC(_POSIX_SHARED_MEMORY_OBJECTS)
+#define _POSIX_SHELL                 SYMBOLIC(_POSIX_SHELL)
+#define _POSIX_SIGQUEUE_MAX          SYMBOLIC(_POSIX_SIGQUEUE_MAX)
+#define _POSIX_SPAWN                 SYMBOLIC(_POSIX_SPAWN)
+#define _POSIX_SPIN_LOCKS            SYMBOLIC(_POSIX_SPIN_LOCKS)
+#define _POSIX_SSIZE_MAX             SYMBOLIC(_POSIX_SSIZE_MAX)
+#define _POSIX_SS_REPL_MAX           SYMBOLIC(_POSIX_SS_REPL_MAX)
+#define _POSIX_STREAM_MAX            SYMBOLIC(_POSIX_STREAM_MAX)
+#define _POSIX_SYMLINK_MAX           SYMBOLIC(_POSIX_SYMLINK_MAX)
+#define _POSIX_SYMLOOP_MAX           SYMBOLIC(_POSIX_SYMLOOP_MAX)
+#define _POSIX_THREADS               SYMBOLIC(_POSIX_THREADS)
+#define _POSIX_THREAD_ATTR_STACKADDR SYMBOLIC(_POSIX_THREAD_ATTR_STACKADDR)
+#define _POSIX_THREAD_ATTR_STACKSIZE SYMBOLIC(_POSIX_THREAD_ATTR_STACKSIZE)
+#define _POSIX_THREAD_CPUTIME        SYMBOLIC(_POSIX_THREAD_CPUTIME)
+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS \
+  SYMBOLIC(_POSIX_THREAD_DESTRUCTOR_ITERATIONS)
+#define _POSIX_THREAD_KEYS_MAX SYMBOLIC(_POSIX_THREAD_KEYS_MAX)
+#define _POSIX_THREAD_PRIORITY_SCHEDULING \
+  SYMBOLIC(_POSIX_THREAD_PRIORITY_SCHEDULING)
+#define _POSIX_THREAD_PROCESS_SHARED SYMBOLIC(_POSIX_THREAD_PROCESS_SHARED)
+#define _POSIX_THREAD_SAFE_FUNCTIONS SYMBOLIC(_POSIX_THREAD_SAFE_FUNCTIONS)
+#define _POSIX_THREAD_THREADS_MAX    SYMBOLIC(_POSIX_THREAD_THREADS_MAX)
+#define _POSIX_TIMEOUTS              SYMBOLIC(_POSIX_TIMEOUTS)
+#define _POSIX_TIMERS                SYMBOLIC(_POSIX_TIMERS)
+#define _POSIX_TIMER_MAX             SYMBOLIC(_POSIX_TIMER_MAX)
+#define _POSIX_TRACE_EVENT_NAME_MAX  SYMBOLIC(_POSIX_TRACE_EVENT_NAME_MAX)
+#define _POSIX_TRACE_NAME_MAX        SYMBOLIC(_POSIX_TRACE_NAME_MAX)
+#define _POSIX_TRACE_SYS_MAX         SYMBOLIC(_POSIX_TRACE_SYS_MAX)
+#define _POSIX_TRACE_USER_EVENT_MAX  SYMBOLIC(_POSIX_TRACE_USER_EVENT_MAX)
+#define _POSIX_TTY_NAME_MAX          SYMBOLIC(_POSIX_TTY_NAME_MAX)
+#define _POSIX_TZNAME_MAX            SYMBOLIC(_POSIX_TZNAME_MAX)
+#define _POSIX_V6_LP64_OFF64         SYMBOLIC(_POSIX_V6_LP64_OFF64)
+#define _POSIX_V7_LP64_OFF64         SYMBOLIC(_POSIX_V7_LP64_OFF64)
+#define _POSIX_VDISABLE              SYMBOLIC(_POSIX_VDISABLE)
+#define _POSIX_VERSION               SYMBOLIC(_POSIX_VERSION)
+
+
+
+/*!BEGIN libc/sysv/consts/_posix2.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS__POSIX2_H_
+
+#define _POSIX2_BC_BASE_MAX SYMBOLIC(_POSIX2_BC_BASE_MAX)
+#define _POSIX2_BC_DIM_MAX SYMBOLIC(_POSIX2_BC_DIM_MAX)
+#define _POSIX2_BC_SCALE_MAX SYMBOLIC(_POSIX2_BC_SCALE_MAX)
+#define _POSIX2_BC_STRING_MAX SYMBOLIC(_POSIX2_BC_STRING_MAX)
+#define _POSIX2_CHARCLASS_NAME_MAX SYMBOLIC(_POSIX2_CHARCLASS_NAME_MAX)
+#define _POSIX2_COLL_WEIGHTS_MAX SYMBOLIC(_POSIX2_COLL_WEIGHTS_MAX)
+#define _POSIX2_C_BIND SYMBOLIC(_POSIX2_C_BIND)
+#define _POSIX2_EXPR_NEST_MAX SYMBOLIC(_POSIX2_EXPR_NEST_MAX)
+#define _POSIX2_LINE_MAX SYMBOLIC(_POSIX2_LINE_MAX)
+#define _POSIX2_RE_DUP_MAX SYMBOLIC(_POSIX2_RE_DUP_MAX)
+#define _POSIX2_VERSION SYMBOLIC(_POSIX2_VERSION)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long _POSIX2_BC_BASE_MAX;
+extern const long _POSIX2_BC_DIM_MAX;
+extern const long _POSIX2_BC_SCALE_MAX;
+extern const long _POSIX2_BC_STRING_MAX;
+extern const long _POSIX2_CHARCLASS_NAME_MAX;
+extern const long _POSIX2_COLL_WEIGHTS_MAX;
+extern const long _POSIX2_C_BIND;
+extern const long _POSIX2_EXPR_NEST_MAX;
+extern const long _POSIX2_LINE_MAX;
+extern const long _POSIX2_RE_DUP_MAX;
+extern const long _POSIX2_VERSION;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/af.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_AF_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long AF_ALG;
+extern const long AF_APPLETALK;
+extern const long AF_ASH;
+extern const long AF_ATMPVC;
+extern const long AF_ATMSVC;
+extern const long AF_AX25;
+extern const long AF_BLUETOOTH;
+extern const long AF_BRIDGE;
+extern const long AF_CAIF;
+extern const long AF_CAN;
+extern const long AF_ECONET;
+extern const long AF_FILE;
+extern const long AF_IB;
+extern const long AF_IEEE802154;
+extern const long AF_INET6;
+extern const long AF_INET;
+extern const long AF_IPX;
+extern const long AF_IRDA;
+extern const long AF_ISDN;
+extern const long AF_IUCV;
+extern const long AF_KCM;
+extern const long AF_KEY;
+extern const long AF_LLC;
+extern const long AF_LOCAL;
+extern const long AF_MAX;
+extern const long AF_MPLS;
+extern const long AF_NETBEUI;
+extern const long AF_NETLINK;
+extern const long AF_NETROM;
+extern const long AF_NFC;
+extern const long AF_PACKET;
+extern const long AF_PHONET;
+extern const long AF_PPPOX;
+extern const long AF_RDS;
+extern const long AF_ROSE;
+extern const long AF_ROUTE;
+extern const long AF_RXRPC;
+extern const long AF_SECURITY;
+extern const long AF_SNA;
+extern const long AF_TIPC;
+extern const long AF_UNIX;
+extern const long AF_UNSPEC;
+extern const long AF_VSOCK;
+extern const long AF_WANPIPE;
+extern const long AF_X25;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define AF_ALG SYMBOLIC(AF_ALG)
+#define AF_APPLETALK SYMBOLIC(AF_APPLETALK)
+#define AF_ASH SYMBOLIC(AF_ASH)
+#define AF_ATMPVC SYMBOLIC(AF_ATMPVC)
+#define AF_ATMSVC SYMBOLIC(AF_ATMSVC)
+#define AF_AX25 SYMBOLIC(AF_AX25)
+#define AF_BLUETOOTH SYMBOLIC(AF_BLUETOOTH)
+#define AF_BRIDGE SYMBOLIC(AF_BRIDGE)
+#define AF_CAIF SYMBOLIC(AF_CAIF)
+#define AF_CAN SYMBOLIC(AF_CAN)
+#define AF_ECONET SYMBOLIC(AF_ECONET)
+#define AF_FILE SYMBOLIC(AF_FILE)
+#define AF_IB SYMBOLIC(AF_IB)
+#define AF_IEEE802154 SYMBOLIC(AF_IEEE802154)
+#define AF_INET LITERALLY(2)
+#define AF_INET6 SYMBOLIC(AF_INET6)
+#define AF_IPX SYMBOLIC(AF_IPX)
+#define AF_IRDA SYMBOLIC(AF_IRDA)
+#define AF_ISDN SYMBOLIC(AF_ISDN)
+#define AF_IUCV SYMBOLIC(AF_IUCV)
+#define AF_KCM SYMBOLIC(AF_KCM)
+#define AF_KEY SYMBOLIC(AF_KEY)
+#define AF_LLC SYMBOLIC(AF_LLC)
+#define AF_LOCAL SYMBOLIC(AF_LOCAL)
+#define AF_MAX SYMBOLIC(AF_MAX)
+#define AF_MPLS SYMBOLIC(AF_MPLS)
+#define AF_NETBEUI SYMBOLIC(AF_NETBEUI)
+#define AF_NETLINK SYMBOLIC(AF_NETLINK)
+#define AF_NETROM SYMBOLIC(AF_NETROM)
+#define AF_NFC SYMBOLIC(AF_NFC)
+#define AF_PACKET SYMBOLIC(AF_PACKET)
+#define AF_PHONET SYMBOLIC(AF_PHONET)
+#define AF_PPPOX SYMBOLIC(AF_PPPOX)
+#define AF_RDS SYMBOLIC(AF_RDS)
+#define AF_ROSE SYMBOLIC(AF_ROSE)
+#define AF_ROUTE SYMBOLIC(AF_ROUTE)
+#define AF_RXRPC SYMBOLIC(AF_RXRPC)
+#define AF_SECURITY SYMBOLIC(AF_SECURITY)
+#define AF_SNA SYMBOLIC(AF_SNA)
+#define AF_TIPC SYMBOLIC(AF_TIPC)
+#define AF_UNIX LITERALLY(1)
+#define AF_UNSPEC LITERALLY(0)
+#define AF_VSOCK SYMBOLIC(AF_VSOCK)
+#define AF_WANPIPE SYMBOLIC(AF_WANPIPE)
+#define AF_X25 SYMBOLIC(AF_X25)
+
+
+
+/*!BEGIN libc/sysv/consts/ai.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_AI_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long AI_ADDRCONFIG;
+extern const long AI_ALL;
+extern const long AI_CANONNAME;
+extern const long AI_NUMERICHOST;
+extern const long AI_NUMERICSERV;
+extern const long AI_PASSIVE;
+extern const long AI_V4MAPPED;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define AI_ADDRCONFIG SYMBOLIC(AI_ADDRCONFIG)
+#define AI_ALL SYMBOLIC(AI_ALL)
+#define AI_CANONNAME LITERALLY(2)
+#define AI_NUMERICHOST LITERALLY(4)
+#define AI_NUMERICSERV SYMBOLIC(AI_NUMERICSERV)
+#define AI_PASSIVE LITERALLY(1)
+#define AI_V4MAPPED SYMBOLIC(AI_V4MAPPED)
+
+
+
+/*!BEGIN libc/sysv/consts/arphrd.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_ARPHRD_H_
+
+#define ARPHRD_ETHER SYMBOLIC(ARPHRD_ETHER)
+#define ARPHRD_FCFABRIC SYMBOLIC(ARPHRD_FCFABRIC)
+#define ARPHRD_IEEE80211 SYMBOLIC(ARPHRD_IEEE80211)
+#define ARPHRD_IEEE80211_PRISM SYMBOLIC(ARPHRD_IEEE80211_PRISM)
+#define ARPHRD_IEEE80211_RADIOTAP SYMBOLIC(ARPHRD_IEEE80211_RADIOTAP)
+#define ARPHRD_IEEE802154 SYMBOLIC(ARPHRD_IEEE802154)
+#define ARPHRD_IEEE802_TR SYMBOLIC(ARPHRD_IEEE802_TR)
+#define ARPHRD_LOCALTLK SYMBOLIC(ARPHRD_LOCALTLK)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long ARPHRD_ETHER;
+extern const long ARPHRD_FCFABRIC;
+extern const long ARPHRD_IEEE80211;
+extern const long ARPHRD_IEEE80211_PRISM;
+extern const long ARPHRD_IEEE80211_RADIOTAP;
+extern const long ARPHRD_IEEE802154;
+extern const long ARPHRD_IEEE802_TR;
+extern const long ARPHRD_LOCALTLK;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/at.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_AT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/**
+ * @fileoverview AT_xxx constants for fcntl(), fopenat(), etc..
+ * @see libc/sysv/consts/auxv.h for getauxval() constants
+ */
+
+extern const long AT_FDCWD;
+extern const long AT_SYMLINK_FOLLOW;
+extern const long AT_SYMLINK_NOFOLLOW;
+extern const long AT_REMOVEDIR;
+extern const long AT_EACCESS;
+extern const long AT_EMPTY_PATH;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define AT_FDCWD            SYMBOLIC(AT_FDCWD)
+#define AT_SYMLINK_FOLLOW   SYMBOLIC(AT_SYMLINK_FOLLOW)
+#define AT_SYMLINK_NOFOLLOW SYMBOLIC(AT_SYMLINK_NOFOLLOW)
+#define AT_REMOVEDIR        SYMBOLIC(AT_REMOVEDIR)
+#define AT_EACCESS          SYMBOLIC(AT_EACCESS)
+#define AT_EMPTY_PATH       SYMBOLIC(AT_EMPTY_PATH)
+
+
+
+/*!BEGIN libc/sysv/consts/blk.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_BLK_H_
+
+#define BLK_BYTECOUNT SYMBOLIC(BLK_BYTECOUNT)
+#define BLK_EOF SYMBOLIC(BLK_EOF)
+#define BLK_EOR SYMBOLIC(BLK_EOR)
+#define BLK_ERRORS SYMBOLIC(BLK_ERRORS)
+#define BLK_RESTART SYMBOLIC(BLK_RESTART)
+
+#define BLKBSZGET SYMBOLIC(BLKBSZGET)
+#define BLKBSZSET SYMBOLIC(BLKBSZSET)
+#define BLKFLSBUF SYMBOLIC(BLKFLSBUF)
+#define BLKFRAGET SYMBOLIC(BLKFRAGET)
+#define BLKFRASET SYMBOLIC(BLKFRASET)
+#define BLKGETSIZE SYMBOLIC(BLKGETSIZE)
+#define BLKGETSIZE64 SYMBOLIC(BLKGETSIZE64)
+#define BLKRAGET SYMBOLIC(BLKRAGET)
+#define BLKRASET SYMBOLIC(BLKRASET)
+#define BLKROGET SYMBOLIC(BLKROGET)
+#define BLKROSET SYMBOLIC(BLKROSET)
+#define BLKRRPART SYMBOLIC(BLKRRPART)
+#define BLKSECTGET SYMBOLIC(BLKSECTGET)
+#define BLKSECTSET SYMBOLIC(BLKSECTSET)
+#define BLKSSZGET SYMBOLIC(BLKSSZGET)
+#define BLKTYPE SYMBOLIC(BLKTYPE)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long BLK_BYTECOUNT;
+extern const long BLK_EOF;
+extern const long BLK_EOR;
+extern const long BLK_ERRORS;
+extern const long BLK_RESTART;
+
+extern const long BLKBSZGET;
+extern const long BLKBSZSET;
+extern const long BLKFLSBUF;
+extern const long BLKFRAGET;
+extern const long BLKFRASET;
+extern const long BLKGETSIZE64;
+extern const long BLKGETSIZE;
+extern const long BLKRAGET;
+extern const long BLKRASET;
+extern const long BLKROGET;
+extern const long BLKROSET;
+extern const long BLKRRPART;
+extern const long BLKSECTGET;
+extern const long BLKSECTSET;
+extern const long BLKSSZGET;
+extern const long BLKTYPE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/bus.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_BUS_H_
+
+#define BUS_ADRALN SYMBOLIC(BUS_ADRALN)
+#define BUS_ADRERR SYMBOLIC(BUS_ADRERR)
+#define BUS_DEVICE_RESET SYMBOLIC(BUS_DEVICE_RESET)
+#define BUS_MCEERR_AO SYMBOLIC(BUS_MCEERR_AO)
+#define BUS_MCEERR_AR SYMBOLIC(BUS_MCEERR_AR)
+#define BUS_OBJERR SYMBOLIC(BUS_OBJERR)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long BUS_ADRALN;
+extern const long BUS_ADRERR;
+extern const long BUS_DEVICE_RESET;
+extern const long BUS_MCEERR_AO;
+extern const long BUS_MCEERR_AR;
+extern const long BUS_OBJERR;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/c.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_C_H_
+
+#define C_IRGRP SYMBOLIC(C_IRGRP)
+#define C_IROTH SYMBOLIC(C_IROTH)
+#define C_IRUSR SYMBOLIC(C_IRUSR)
+#define C_ISBLK SYMBOLIC(C_ISBLK)
+#define C_ISCHR SYMBOLIC(C_ISCHR)
+#define C_ISCTG SYMBOLIC(C_ISCTG)
+#define C_ISDIR SYMBOLIC(C_ISDIR)
+#define C_ISFIFO SYMBOLIC(C_ISFIFO)
+#define C_ISGID SYMBOLIC(C_ISGID)
+#define C_ISLNK SYMBOLIC(C_ISLNK)
+#define C_ISREG SYMBOLIC(C_ISREG)
+#define C_ISSOCK SYMBOLIC(C_ISSOCK)
+#define C_ISUID SYMBOLIC(C_ISUID)
+#define C_ISVTX SYMBOLIC(C_ISVTX)
+#define C_IWGRP SYMBOLIC(C_IWGRP)
+#define C_IWOTH SYMBOLIC(C_IWOTH)
+#define C_IWUSR SYMBOLIC(C_IWUSR)
+#define C_IXGRP SYMBOLIC(C_IXGRP)
+#define C_IXOTH SYMBOLIC(C_IXOTH)
+#define C_IXUSR SYMBOLIC(C_IXUSR)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long C_IRGRP;
+extern const long C_IROTH;
+extern const long C_IRUSR;
+extern const long C_ISBLK;
+extern const long C_ISCHR;
+extern const long C_ISCTG;
+extern const long C_ISDIR;
+extern const long C_ISFIFO;
+extern const long C_ISGID;
+extern const long C_ISLNK;
+extern const long C_ISREG;
+extern const long C_ISSOCK;
+extern const long C_ISUID;
+extern const long C_ISVTX;
+extern const long C_IWGRP;
+extern const long C_IWOTH;
+extern const long C_IWUSR;
+extern const long C_IXGRP;
+extern const long C_IXOTH;
+extern const long C_IXUSR;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/cld.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_CLD_H_
+
+#define CLD_CONTINUED 6
+#define CLD_DUMPED    3
+#define CLD_EXITED    1
+#define CLD_KILLED    2
+#define CLD_STOPPED   5
+#define CLD_TRAPPED   4
+
+
+
+/*!BEGIN libc/sysv/consts/clock.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_CLOCK_H_
+
+#define CLOCK_BOOTTIME SYMBOLIC(CLOCK_BOOTTIME)
+#define CLOCK_BOOTTIME_ALARM SYMBOLIC(CLOCK_BOOTTIME_ALARM)
+#define CLOCK_MONOTONIC SYMBOLIC(CLOCK_MONOTONIC)
+#define CLOCK_MONOTONIC_COARSE SYMBOLIC(CLOCK_MONOTONIC_COARSE)
+#define CLOCK_MONOTONIC_RAW SYMBOLIC(CLOCK_MONOTONIC_RAW)
+#define CLOCK_PROCESS_CPUTIME_ID SYMBOLIC(CLOCK_PROCESS_CPUTIME_ID)
+#define CLOCK_REALTIME SYMBOLIC(CLOCK_REALTIME)
+#define CLOCK_REALTIME_ALARM SYMBOLIC(CLOCK_REALTIME_ALARM)
+#define CLOCK_REALTIME_COARSE SYMBOLIC(CLOCK_REALTIME_COARSE)
+#define CLOCK_TAI SYMBOLIC(CLOCK_TAI)
+#define CLOCK_THREAD_CPUTIME_ID SYMBOLIC(CLOCK_THREAD_CPUTIME_ID)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long CLOCK_BOOTTIME;
+extern const long CLOCK_BOOTTIME_ALARM;
+extern const long CLOCK_MONOTONIC;
+extern const long CLOCK_MONOTONIC_COARSE;
+extern const long CLOCK_MONOTONIC_RAW;
+extern const long CLOCK_PROCESS_CPUTIME_ID;
+extern const long CLOCK_REALTIME;
+extern const long CLOCK_REALTIME_ALARM;
+extern const long CLOCK_REALTIME_COARSE;
+extern const long CLOCK_TAI;
+extern const long CLOCK_THREAD_CPUTIME_ID;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/dt.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_DT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long DT_UNKNOWN;
+extern const long DT_FIFO;
+extern const long DT_CHR;
+extern const long DT_DIR;
+extern const long DT_BLK;
+extern const long DT_REG;
+extern const long DT_LNK;
+extern const long DT_SOCK;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define DT_UNKNOWN LITERALLY(0)
+#define DT_FIFO    LITERALLY(1)
+#define DT_CHR     LITERALLY(2)
+#define DT_DIR     LITERALLY(4)
+#define DT_BLK     LITERALLY(6)
+#define DT_REG     LITERALLY(8)
+#define DT_LNK     LITERALLY(10)
+#define DT_SOCK    LITERALLY(12)
+
+
+
+/*!BEGIN libc/sysv/consts/epoll.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_EPOLL_H_
+
+
+/*!BEGIN libc/sysv/consts/o.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_O_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long O_ACCMODE;
+extern const long O_APPEND;
+extern const long O_ASYNC;
+extern const long O_CLOEXEC;
+extern const long O_CREAT;
+extern const long O_DIRECT;
+extern const long O_DIRECTORY;
+extern const long O_DSYNC;
+extern const long O_EXCL;
+extern const long O_EXEC;
+extern const long O_LARGEFILE;
+extern const long O_NDELAY;
+extern const long O_NOATIME;
+extern const long O_NOCTTY;
+extern const long O_NOFOLLOW;
+extern const long O_NONBLOCK;
+extern const long O_PATH;
+extern const long O_RDONLY;
+extern const long O_RDWR;
+extern const long O_RSYNC;
+extern const long O_SPARSE;
+extern const long O_SYNC;
+extern const long O_TMPFILE;
+extern const long O_TRUNC;
+extern const long O_TTY_INIT;
+extern const long O_WRONLY;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define O_ACCMODE SYMBOLIC(O_ACCMODE)
+#define O_APPEND SYMBOLIC(O_APPEND)
+#define O_ASYNC SYMBOLIC(O_ASYNC)
+#define O_CLOEXEC SYMBOLIC(O_CLOEXEC)
+#define O_CREAT SYMBOLIC(O_CREAT)
+#define O_DIRECT SYMBOLIC(O_DIRECT)
+#define O_DIRECTORY SYMBOLIC(O_DIRECTORY)
+#define O_DSYNC SYMBOLIC(O_DSYNC)
+#define O_EXCL SYMBOLIC(O_EXCL)
+#define O_EXEC SYMBOLIC(O_EXEC)
+#define O_LARGEFILE SYMBOLIC(O_LARGEFILE)
+#define O_NDELAY SYMBOLIC(O_NDELAY)
+#define O_NOATIME SYMBOLIC(O_NOATIME)
+#define O_NOCTTY SYMBOLIC(O_NOCTTY)
+#define O_NOFOLLOW SYMBOLIC(O_NOFOLLOW)
+#define O_NONBLOCK SYMBOLIC(O_NONBLOCK)
+#define O_PATH SYMBOLIC(O_PATH)
+#define O_RDONLY SYMBOLIC(O_RDONLY)
+#define O_RDWR SYMBOLIC(O_RDWR)
+#define O_RSYNC SYMBOLIC(O_RSYNC)
+#define O_SPARSE SYMBOLIC(O_SPARSE)
+#define O_SYNC SYMBOLIC(O_SYNC)
+#define O_TMPFILE SYMBOLIC(O_TMPFILE)
+#define O_TRUNC SYMBOLIC(O_TRUNC)
+#define O_TTY_INIT SYMBOLIC(O_TTY_INIT)
+#define O_WRONLY SYMBOLIC(O_WRONLY)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long EPOLL_CLOEXEC;
+
+extern const long EPOLL_CTL_ADD;
+extern const long EPOLL_CTL_DEL;
+extern const long EPOLL_CTL_MOD;
+
+extern const long EPOLLIN;
+extern const long EPOLLPRI;
+extern const long EPOLLOUT;
+extern const long EPOLLERR;
+extern const long EPOLLHUP;
+extern const long EPOLLRDNORM;
+extern const long EPOLLRDBAND;
+extern const long EPOLLWRNORM;
+extern const long EPOLLWRBAND;
+extern const long EPOLLMSG;
+extern const long EPOLLRDHUP;
+extern const long EPOLLEXCLUSIVE;
+extern const long EPOLLWAKEUP;
+extern const long EPOLLONESHOT;
+extern const long EPOLLET;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define EPOLL_CLOEXEC O_CLOEXEC
+
+#define EPOLL_CTL_ADD LITERALLY(1)
+#define EPOLL_CTL_DEL LITERALLY(2)
+#define EPOLL_CTL_MOD LITERALLY(3)
+
+#define EPOLLIN        LITERALLY(1)
+#define EPOLLPRI       LITERALLY(2)
+#define EPOLLOUT       LITERALLY(4)
+#define EPOLLERR       LITERALLY(8)
+#define EPOLLHUP       LITERALLY(0x10)
+#define EPOLLRDNORM    LITERALLY(0x40)
+#define EPOLLRDBAND    LITERALLY(0x80)
+#define EPOLLWRNORM    LITERALLY(0x0100)
+#define EPOLLWRBAND    LITERALLY(0x0200)
+#define EPOLLMSG       LITERALLY(0x0400)
+#define EPOLLRDHUP     LITERALLY(0x2000)
+#define EPOLLEXCLUSIVE LITERALLY(0x10000000)
+#define EPOLLWAKEUP    LITERALLY(0x20000000)
+#define EPOLLONESHOT   LITERALLY(0x40000000)
+#define EPOLLET        LITERALLY(0x80000000)
+
+
+
+/*!BEGIN libc/sysv/consts/eth.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_ETH_H_
+
+#define ETH_P_CUST SYMBOLIC(ETH_P_CUST)
+#define ETH_P_DDCMP SYMBOLIC(ETH_P_DDCMP)
+#define ETH_P_DEC SYMBOLIC(ETH_P_DEC)
+#define ETH_P_DIAG SYMBOLIC(ETH_P_DIAG)
+#define ETH_P_DNA_DL SYMBOLIC(ETH_P_DNA_DL)
+#define ETH_P_DNA_RC SYMBOLIC(ETH_P_DNA_RC)
+#define ETH_P_DNA_RT SYMBOLIC(ETH_P_DNA_RT)
+#define ETH_P_IEEE802154 SYMBOLIC(ETH_P_IEEE802154)
+#define ETH_P_LAT SYMBOLIC(ETH_P_LAT)
+#define ETH_P_LOCALTALK SYMBOLIC(ETH_P_LOCALTALK)
+#define ETH_P_PPP_MP SYMBOLIC(ETH_P_PPP_MP)
+#define ETH_P_RARP SYMBOLIC(ETH_P_RARP)
+#define ETH_P_SCA SYMBOLIC(ETH_P_SCA)
+#define ETH_P_WAN_PPP SYMBOLIC(ETH_P_WAN_PPP)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long ETH_P_CUST;
+extern const long ETH_P_DDCMP;
+extern const long ETH_P_DEC;
+extern const long ETH_P_DIAG;
+extern const long ETH_P_DNA_DL;
+extern const long ETH_P_DNA_RC;
+extern const long ETH_P_DNA_RT;
+extern const long ETH_P_IEEE802154;
+extern const long ETH_P_LAT;
+extern const long ETH_P_LOCALTALK;
+extern const long ETH_P_PPP_MP;
+extern const long ETH_P_RARP;
+extern const long ETH_P_SCA;
+extern const long ETH_P_WAN_PPP;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/ex.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_EX_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long EX_CANTCREAT;
+extern const long EX_CONFIG;
+extern const long EX_DATAERR;
+extern const long EX_IOERR;
+extern const long EX_NOHOST;
+extern const long EX_NOINPUT;
+extern const long EX_NOPERM;
+extern const long EX_NOUSER;
+extern const long EX_OK;
+extern const long EX_OSERR;
+extern const long EX_OSFILE;
+extern const long EX_PROTOCOL;
+extern const long EX_SOFTWARE;
+extern const long EX_TEMPFAIL;
+extern const long EX_UNAVAILABLE;
+extern const long EX_USAGE;
+extern const long EX__BASE;
+extern const long EX__MAX;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define EX_CANTCREAT LITERALLY(73)
+#define EX_CONFIG LITERALLY(78)
+#define EX_DATAERR LITERALLY(65)
+#define EX_IOERR LITERALLY(74)
+#define EX_NOHOST LITERALLY(68)
+#define EX_NOINPUT LITERALLY(66)
+#define EX_NOPERM LITERALLY(77)
+#define EX_NOUSER LITERALLY(67)
+#define EX_OK LITERALLY(0)
+#define EX_OSERR LITERALLY(71)
+#define EX_OSFILE LITERALLY(72)
+#define EX_PROTOCOL LITERALLY(76)
+#define EX_SOFTWARE LITERALLY(70)
+#define EX_TEMPFAIL LITERALLY(75)
+#define EX_UNAVAILABLE LITERALLY(69)
+#define EX_USAGE LITERALLY(64)
+#define EX__BASE LITERALLY(64)
+#define EX__MAX LITERALLY(78)
+
+
+
+/*!BEGIN libc/sysv/consts/exit.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_EXIT_H_
+
+#define EXIT_FAILURE SYMBOLIC(EXIT_FAILURE)
+#define EXIT_SUCCESS SYMBOLIC(EXIT_SUCCESS)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long EXIT_FAILURE;
+extern const long EXIT_SUCCESS;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/f.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_F_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long F_DUPFD;
+extern const long F_DUPFD_CLOEXEC;
+extern const long F_GETFD;
+extern const long F_GETFL;
+extern const long F_GETLEASE;
+extern const long F_GETLK64;
+extern const long F_GETLK;
+extern const long F_GETOWN;
+extern const long F_GETOWN_EX;
+extern const long F_GETPIPE_SZ;
+extern const long F_GETSIG;
+extern const long F_LOCK;
+extern const long F_NOTIFY;
+extern const long F_OFD_GETLK;
+extern const long F_OFD_SETLK;
+extern const long F_OFD_SETLKW;
+extern const long F_RDLCK;
+extern const long F_SETFD;
+extern const long F_SETFL;
+extern const long F_SETLEASE;
+extern const long F_SETLK64;
+extern const long F_SETLK;
+extern const long F_SETLKW64;
+extern const long F_SETLKW;
+extern const long F_SETOWN;
+extern const long F_SETOWN_EX;
+extern const long F_SETPIPE_SZ;
+extern const long F_SETSIG;
+extern const long F_TEST;
+extern const long F_TLOCK;
+extern const long F_ULOCK;
+extern const long F_UNLCK;
+extern const long F_WRLCK;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define F_GETFD LITERALLY(1)
+#define F_SETFD LITERALLY(2)
+#define F_GETFL LITERALLY(3)
+#define F_SETFL LITERALLY(4)
+
+#define F_DUPFD SYMBOLIC(F_DUPFD)
+#define F_DUPFD_CLOEXEC SYMBOLIC(F_DUPFD_CLOEXEC)
+#define F_GETLEASE SYMBOLIC(F_GETLEASE)
+#define F_GETLK SYMBOLIC(F_GETLK)
+#define F_GETLK64 SYMBOLIC(F_GETLK64)
+#define F_GETOWN SYMBOLIC(F_GETOWN)
+#define F_GETOWN_EX SYMBOLIC(F_GETOWN_EX)
+#define F_GETPIPE_SZ SYMBOLIC(F_GETPIPE_SZ)
+#define F_GETSIG SYMBOLIC(F_GETSIG)
+#define F_LOCK SYMBOLIC(F_LOCK)
+#define F_NOTIFY SYMBOLIC(F_NOTIFY)
+#define F_OFD_GETLK SYMBOLIC(F_OFD_GETLK)
+#define F_OFD_SETLK SYMBOLIC(F_OFD_SETLK)
+#define F_OFD_SETLKW SYMBOLIC(F_OFD_SETLKW)
+#define F_RDLCK SYMBOLIC(F_RDLCK)
+#define F_SETLEASE SYMBOLIC(F_SETLEASE)
+#define F_SETLK SYMBOLIC(F_SETLK)
+#define F_SETLK64 SYMBOLIC(F_SETLK64)
+#define F_SETLKW SYMBOLIC(F_SETLKW)
+#define F_SETLKW64 SYMBOLIC(F_SETLKW64)
+#define F_SETOWN SYMBOLIC(F_SETOWN)
+#define F_SETOWN_EX SYMBOLIC(F_SETOWN_EX)
+#define F_SETPIPE_SZ SYMBOLIC(F_SETPIPE_SZ)
+#define F_SETSIG SYMBOLIC(F_SETSIG)
+#define F_TEST SYMBOLIC(F_TEST)
+#define F_TLOCK SYMBOLIC(F_TLOCK)
+#define F_ULOCK SYMBOLIC(F_ULOCK)
+#define F_UNLCK SYMBOLIC(F_UNLCK)
+#define F_WRLCK SYMBOLIC(F_WRLCK)
+
+
+
+/*!BEGIN libc/sysv/consts/falloc.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FALLOC_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long FALLOC_FL_KEEP_SIZE;
+extern const long FALLOC_FL_PUNCH_HOLE;
+extern const long FALLOC_FL_NO_HIDE_STALE;
+extern const long FALLOC_FL_COLLAPSE_RANGE;
+extern const long FALLOC_FL_ZERO_RANGE;
+extern const long FALLOC_FL_INSERT_RANGE;
+extern const long FALLOC_FL_UNSHARE_RANGE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define FALLOC_FL_KEEP_SIZE SYMBOLIC(FALLOC_FL_KEEP_SIZE)
+#define FALLOC_FL_PUNCH_HOLE SYMBOLIC(FALLOC_FL_PUNCH_HOLE)
+#define FALLOC_FL_NO_HIDE_STALE SYMBOLIC(FALLOC_FL_NO_HIDE_STALE)
+#define FALLOC_FL_COLLAPSE_RANGE SYMBOLIC(FALLOC_FL_COLLAPSE_RANGE)
+#define FALLOC_FL_ZERO_RANGE SYMBOLIC(FALLOC_FL_ZERO_RANGE)
+#define FALLOC_FL_INSERT_RANGE SYMBOLIC(FALLOC_FL_INSERT_RANGE)
+#define FALLOC_FL_UNSHARE_RANGE SYMBOLIC(FALLOC_FL_UNSHARE_RANGE)
+
+
+
+/*!BEGIN libc/sysv/consts/fan.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FAN_H_
+
+#define FAN_ACCESS SYMBOLIC(FAN_ACCESS)
+#define FAN_ACCESS_PERM SYMBOLIC(FAN_ACCESS_PERM)
+#define FAN_ALLOW SYMBOLIC(FAN_ALLOW)
+#define FAN_ALL_CLASS_BITS SYMBOLIC(FAN_ALL_CLASS_BITS)
+#define FAN_ALL_EVENTS SYMBOLIC(FAN_ALL_EVENTS)
+#define FAN_ALL_INIT_FLAGS SYMBOLIC(FAN_ALL_INIT_FLAGS)
+#define FAN_ALL_MARK_FLAGS SYMBOLIC(FAN_ALL_MARK_FLAGS)
+#define FAN_ALL_OUTGOING_EVENTS SYMBOLIC(FAN_ALL_OUTGOING_EVENTS)
+#define FAN_ALL_PERM_EVENTS SYMBOLIC(FAN_ALL_PERM_EVENTS)
+#define FAN_CLASS_CONTENT SYMBOLIC(FAN_CLASS_CONTENT)
+#define FAN_CLASS_NOTIF SYMBOLIC(FAN_CLASS_NOTIF)
+#define FAN_CLASS_PRE_CONTENT SYMBOLIC(FAN_CLASS_PRE_CONTENT)
+#define FAN_CLOEXEC SYMBOLIC(FAN_CLOEXEC)
+#define FAN_CLOSE SYMBOLIC(FAN_CLOSE)
+#define FAN_CLOSE_NOWRITE SYMBOLIC(FAN_CLOSE_NOWRITE)
+#define FAN_CLOSE_WRITE SYMBOLIC(FAN_CLOSE_WRITE)
+#define FAN_DENY SYMBOLIC(FAN_DENY)
+#define FAN_EVENT_METADATA_LEN SYMBOLIC(FAN_EVENT_METADATA_LEN)
+#define FAN_EVENT_ON_CHILD SYMBOLIC(FAN_EVENT_ON_CHILD)
+#define FAN_MARK_ADD SYMBOLIC(FAN_MARK_ADD)
+#define FAN_MARK_DONT_FOLLOW SYMBOLIC(FAN_MARK_DONT_FOLLOW)
+#define FAN_MARK_FLUSH SYMBOLIC(FAN_MARK_FLUSH)
+#define FAN_MARK_IGNORED_MASK SYMBOLIC(FAN_MARK_IGNORED_MASK)
+#define FAN_MARK_IGNORED_SURV_MODIFY SYMBOLIC(FAN_MARK_IGNORED_SURV_MODIFY)
+#define FAN_MARK_MOUNT SYMBOLIC(FAN_MARK_MOUNT)
+#define FAN_MARK_ONLYDIR SYMBOLIC(FAN_MARK_ONLYDIR)
+#define FAN_MARK_REMOVE SYMBOLIC(FAN_MARK_REMOVE)
+#define FAN_MODIFY SYMBOLIC(FAN_MODIFY)
+#define FAN_NOFD SYMBOLIC(FAN_NOFD)
+#define FAN_NONBLOCK SYMBOLIC(FAN_NONBLOCK)
+#define FAN_ONDIR SYMBOLIC(FAN_ONDIR)
+#define FAN_OPEN SYMBOLIC(FAN_OPEN)
+#define FAN_OPEN_PERM SYMBOLIC(FAN_OPEN_PERM)
+#define FAN_Q_OVERFLOW SYMBOLIC(FAN_Q_OVERFLOW)
+#define FAN_UNLIMITED_MARKS SYMBOLIC(FAN_UNLIMITED_MARKS)
+#define FAN_UNLIMITED_QUEUE SYMBOLIC(FAN_UNLIMITED_QUEUE)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long FAN_ACCESS;
+extern const long FAN_ACCESS_PERM;
+extern const long FAN_ALLOW;
+extern const long FAN_ALL_CLASS_BITS;
+extern const long FAN_ALL_EVENTS;
+extern const long FAN_ALL_INIT_FLAGS;
+extern const long FAN_ALL_MARK_FLAGS;
+extern const long FAN_ALL_OUTGOING_EVENTS;
+extern const long FAN_ALL_PERM_EVENTS;
+extern const long FAN_CLASS_CONTENT;
+extern const long FAN_CLASS_NOTIF;
+extern const long FAN_CLASS_PRE_CONTENT;
+extern const long FAN_CLOEXEC;
+extern const long FAN_CLOSE;
+extern const long FAN_CLOSE_NOWRITE;
+extern const long FAN_CLOSE_WRITE;
+extern const long FAN_DENY;
+extern const long FAN_EVENT_METADATA_LEN;
+extern const long FAN_EVENT_ON_CHILD;
+extern const long FAN_MARK_ADD;
+extern const long FAN_MARK_DONT_FOLLOW;
+extern const long FAN_MARK_FLUSH;
+extern const long FAN_MARK_IGNORED_MASK;
+extern const long FAN_MARK_IGNORED_SURV_MODIFY;
+extern const long FAN_MARK_MOUNT;
+extern const long FAN_MARK_ONLYDIR;
+extern const long FAN_MARK_REMOVE;
+extern const long FAN_MODIFY;
+extern const long FAN_NOFD;
+extern const long FAN_NONBLOCK;
+extern const long FAN_ONDIR;
+extern const long FAN_OPEN;
+extern const long FAN_OPEN_PERM;
+extern const long FAN_Q_OVERFLOW;
+extern const long FAN_UNLIMITED_MARKS;
+extern const long FAN_UNLIMITED_QUEUE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/fd.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long FD_CLOEXEC;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define FD_CLOEXEC LITERALLY(1)
+
+
+
+/*!BEGIN libc/sysv/consts/fe.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FE_H_
+
+#define FE_ALL_EXCEPT SYMBOLIC(FE_ALL_EXCEPT)
+#define FE_DIVBYZERO SYMBOLIC(FE_DIVBYZERO)
+#define FE_DOWNWARD SYMBOLIC(FE_DOWNWARD)
+#define FE_INEXACT SYMBOLIC(FE_INEXACT)
+#define FE_INVALID SYMBOLIC(FE_INVALID)
+#define FE_OVERFLOW SYMBOLIC(FE_OVERFLOW)
+#define FE_TONEAREST SYMBOLIC(FE_TONEAREST)
+#define FE_TOWARDZERO SYMBOLIC(FE_TOWARDZERO)
+#define FE_UNDERFLOW SYMBOLIC(FE_UNDERFLOW)
+#define FE_UPWARD SYMBOLIC(FE_UPWARD)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long FE_ALL_EXCEPT;
+extern const long FE_DIVBYZERO;
+extern const long FE_DOWNWARD;
+extern const long FE_INEXACT;
+extern const long FE_INVALID;
+extern const long FE_OVERFLOW;
+extern const long FE_TONEAREST;
+extern const long FE_TOWARDZERO;
+extern const long FE_UNDERFLOW;
+extern const long FE_UPWARD;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/fileno.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FILENO_H_
+
+#define STDIN_FILENO LITERALLY(0)
+#define STDOUT_FILENO LITERALLY(1)
+#define STDERR_FILENO LITERALLY(2)
+
+
+
+/*!BEGIN libc/sysv/consts/fio.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FIO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long FIONBIO;
+extern const long FIONREAD;
+extern const long FIOASYNC;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define FIONBIO SYMBOLIC(FIONBIO)
+#define FIONREAD SYMBOLIC(FIONREAD)
+#define FIOASYNC SYMBOLIC(FIOASYNC)
+
+
+
+/*!BEGIN libc/sysv/consts/ftw.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FTW_H_
+
+#define FTW_CHDIR SYMBOLIC(FTW_CHDIR)
+#define FTW_D SYMBOLIC(FTW_D)
+#define FTW_DEPTH SYMBOLIC(FTW_DEPTH)
+#define FTW_DNR SYMBOLIC(FTW_DNR)
+#define FTW_DP SYMBOLIC(FTW_DP)
+#define FTW_F SYMBOLIC(FTW_F)
+#define FTW_MOUNT SYMBOLIC(FTW_MOUNT)
+#define FTW_NS SYMBOLIC(FTW_NS)
+#define FTW_PHYS SYMBOLIC(FTW_PHYS)
+#define FTW_SL SYMBOLIC(FTW_SL)
+#define FTW_SLN SYMBOLIC(FTW_SLN)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long FTW_CHDIR;
+extern const long FTW_D;
+extern const long FTW_DEPTH;
+extern const long FTW_DNR;
+extern const long FTW_DP;
+extern const long FTW_F;
+extern const long FTW_MOUNT;
+extern const long FTW_NS;
+extern const long FTW_PHYS;
+extern const long FTW_SL;
+extern const long FTW_SLN;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/futex.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FUTEX_H_
+
+#define FUTEX_PRIVATE_FLAG    SYMBOLIC(FUTEX_PRIVATE_FLAG)
+#define FUTEX_REQUEUE         SYMBOLIC(FUTEX_REQUEUE)
+#define FUTEX_REQUEUE_PRIVATE SYMBOLIC(FUTEX_REQUEUE_PRIVATE)
+#define FUTEX_WAIT            SYMBOLIC(FUTEX_WAIT)
+#define FUTEX_WAIT_PRIVATE    SYMBOLIC(FUTEX_WAIT_PRIVATE)
+#define FUTEX_WAKE            SYMBOLIC(FUTEX_WAKE)
+#define FUTEX_WAKE_PRIVATE    SYMBOLIC(FUTEX_WAKE_PRIVATE)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long FUTEX_PRIVATE_FLAG;
+extern const long FUTEX_REQUEUE;
+extern const long FUTEX_REQUEUE_PRIVATE;
+extern const long FUTEX_WAIT;
+extern const long FUTEX_WAIT_PRIVATE;
+extern const long FUTEX_WAKE;
+extern const long FUTEX_WAKE_PRIVATE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/grnd.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_GRND_H_
+
+#define GRND_NONBLOCK LITERALLY(1)
+#define GRND_RANDOM LITERALLY(2)
+
+
+
+/*!BEGIN libc/sysv/consts/icmp6.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_ICMP6_H_
+
+#define ICMP6_DST_UNREACH SYMBOLIC(ICMP6_DST_UNREACH)
+#define ICMP6_DST_UNREACH_ADDR SYMBOLIC(ICMP6_DST_UNREACH_ADDR)
+#define ICMP6_DST_UNREACH_ADMIN SYMBOLIC(ICMP6_DST_UNREACH_ADMIN)
+#define ICMP6_DST_UNREACH_BEYONDSCOPE SYMBOLIC(ICMP6_DST_UNREACH_BEYONDSCOPE)
+#define ICMP6_DST_UNREACH_NOPORT SYMBOLIC(ICMP6_DST_UNREACH_NOPORT)
+#define ICMP6_DST_UNREACH_NOROUTE SYMBOLIC(ICMP6_DST_UNREACH_NOROUTE)
+#define ICMP6_ECHO_REPLY SYMBOLIC(ICMP6_ECHO_REPLY)
+#define ICMP6_ECHO_REQUEST SYMBOLIC(ICMP6_ECHO_REQUEST)
+#define ICMP6_FILTER SYMBOLIC(ICMP6_FILTER)
+#define ICMP6_INFOMSG_MASK SYMBOLIC(ICMP6_INFOMSG_MASK)
+#define ICMP6_PACKET_TOO_BIG SYMBOLIC(ICMP6_PACKET_TOO_BIG)
+#define ICMP6_PARAMPROB_HEADER SYMBOLIC(ICMP6_PARAMPROB_HEADER)
+#define ICMP6_PARAMPROB_NEXTHEADER SYMBOLIC(ICMP6_PARAMPROB_NEXTHEADER)
+#define ICMP6_PARAMPROB_OPTION SYMBOLIC(ICMP6_PARAMPROB_OPTION)
+#define ICMP6_PARAM_PROB SYMBOLIC(ICMP6_PARAM_PROB)
+#define ICMP6_ROUTER_RENUMBERING SYMBOLIC(ICMP6_ROUTER_RENUMBERING)
+#define ICMP6_RR_FLAGS_FORCEAPPLY SYMBOLIC(ICMP6_RR_FLAGS_FORCEAPPLY)
+#define ICMP6_RR_FLAGS_PREVDONE SYMBOLIC(ICMP6_RR_FLAGS_PREVDONE)
+#define ICMP6_RR_FLAGS_REQRESULT SYMBOLIC(ICMP6_RR_FLAGS_REQRESULT)
+#define ICMP6_RR_FLAGS_SPECSITE SYMBOLIC(ICMP6_RR_FLAGS_SPECSITE)
+#define ICMP6_RR_FLAGS_TEST SYMBOLIC(ICMP6_RR_FLAGS_TEST)
+#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME \
+  SYMBOLIC(ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME)
+#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME \
+  SYMBOLIC(ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME)
+#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO SYMBOLIC(ICMP6_RR_PCOUSE_RAFLAGS_AUTO)
+#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK SYMBOLIC(ICMP6_RR_PCOUSE_RAFLAGS_ONLINK)
+#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN \
+  SYMBOLIC(ICMP6_RR_RESULT_FLAGS_FORBIDDEN)
+#define ICMP6_RR_RESULT_FLAGS_OOB SYMBOLIC(ICMP6_RR_RESULT_FLAGS_OOB)
+#define ICMP6_TIME_EXCEEDED SYMBOLIC(ICMP6_TIME_EXCEEDED)
+#define ICMP6_TIME_EXCEED_REASSEMBLY SYMBOLIC(ICMP6_TIME_EXCEED_REASSEMBLY)
+#define ICMP6_TIME_EXCEED_TRANSIT SYMBOLIC(ICMP6_TIME_EXCEED_TRANSIT)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long ICMP6_DST_UNREACH;
+extern const long ICMP6_DST_UNREACH_ADDR;
+extern const long ICMP6_DST_UNREACH_ADMIN;
+extern const long ICMP6_DST_UNREACH_BEYONDSCOPE;
+extern const long ICMP6_DST_UNREACH_NOPORT;
+extern const long ICMP6_DST_UNREACH_NOROUTE;
+extern const long ICMP6_ECHO_REPLY;
+extern const long ICMP6_ECHO_REQUEST;
+extern const long ICMP6_FILTER;
+extern const long ICMP6_INFOMSG_MASK;
+extern const long ICMP6_PACKET_TOO_BIG;
+extern const long ICMP6_PARAMPROB_HEADER;
+extern const long ICMP6_PARAMPROB_NEXTHEADER;
+extern const long ICMP6_PARAMPROB_OPTION;
+extern const long ICMP6_PARAM_PROB;
+extern const long ICMP6_ROUTER_RENUMBERING;
+extern const long ICMP6_RR_FLAGS_FORCEAPPLY;
+extern const long ICMP6_RR_FLAGS_PREVDONE;
+extern const long ICMP6_RR_FLAGS_REQRESULT;
+extern const long ICMP6_RR_FLAGS_SPECSITE;
+extern const long ICMP6_RR_FLAGS_TEST;
+extern const long ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME;
+extern const long ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME;
+extern const long ICMP6_RR_PCOUSE_RAFLAGS_AUTO;
+extern const long ICMP6_RR_PCOUSE_RAFLAGS_ONLINK;
+extern const long ICMP6_RR_RESULT_FLAGS_FORBIDDEN;
+extern const long ICMP6_RR_RESULT_FLAGS_OOB;
+extern const long ICMP6_TIME_EXCEEDED;
+extern const long ICMP6_TIME_EXCEED_REASSEMBLY;
+extern const long ICMP6_TIME_EXCEED_TRANSIT;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/iff.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IFF_H_
+
+#define IFF_ALLMULTI SYMBOLIC(IFF_ALLMULTI)
+#define IFF_AUTOMEDIA SYMBOLIC(IFF_AUTOMEDIA)
+#define IFF_BROADCAST SYMBOLIC(IFF_BROADCAST)
+#define IFF_DEBUG SYMBOLIC(IFF_DEBUG)
+#define IFF_DYNAMIC SYMBOLIC(IFF_DYNAMIC)
+#define IFF_LOOPBACK SYMBOLIC(IFF_LOOPBACK)
+#define IFF_MASTER SYMBOLIC(IFF_MASTER)
+#define IFF_MULTICAST SYMBOLIC(IFF_MULTICAST)
+#define IFF_NOARP SYMBOLIC(IFF_NOARP)
+#define IFF_NOTRAILERS SYMBOLIC(IFF_NOTRAILERS)
+#define IFF_POINTOPOINT SYMBOLIC(IFF_POINTOPOINT)
+#define IFF_PORTSEL SYMBOLIC(IFF_PORTSEL)
+#define IFF_PROMISC SYMBOLIC(IFF_PROMISC)
+#define IFF_RUNNING SYMBOLIC(IFF_RUNNING)
+#define IFF_SLAVE SYMBOLIC(IFF_SLAVE)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long IFF_ALLMULTI;
+extern const long IFF_AUTOMEDIA;
+extern const long IFF_BROADCAST;
+extern const long IFF_DEBUG;
+extern const long IFF_DYNAMIC;
+extern const long IFF_LOOPBACK;
+extern const long IFF_MASTER;
+extern const long IFF_MULTICAST;
+extern const long IFF_NOARP;
+extern const long IFF_NOTRAILERS;
+extern const long IFF_POINTOPOINT;
+extern const long IFF_PORTSEL;
+extern const long IFF_PROMISC;
+extern const long IFF_RUNNING;
+extern const long IFF_SLAVE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/ill.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_ILL_H_
+
+#define ILL_BADSTK SYMBOLIC(ILL_BADSTK)
+#define ILL_COPROC SYMBOLIC(ILL_COPROC)
+#define ILL_ILLADR SYMBOLIC(ILL_ILLADR)
+#define ILL_ILLOPC SYMBOLIC(ILL_ILLOPC)
+#define ILL_ILLOPN SYMBOLIC(ILL_ILLOPN)
+#define ILL_ILLTRP SYMBOLIC(ILL_ILLTRP)
+#define ILL_PRVOPC SYMBOLIC(ILL_PRVOPC)
+#define ILL_PRVREG SYMBOLIC(ILL_PRVREG)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long ILL_BADSTK;
+extern const long ILL_COPROC;
+extern const long ILL_ILLADR;
+extern const long ILL_ILLOPC;
+extern const long ILL_ILLOPN;
+extern const long ILL_ILLTRP;
+extern const long ILL_PRVOPC;
+extern const long ILL_PRVREG;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/in.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IN_H_
+
+#define IN_ACCESS SYMBOLIC(IN_ACCESS)
+#define IN_ALL_EVENTS SYMBOLIC(IN_ALL_EVENTS)
+#define IN_ATTRIB SYMBOLIC(IN_ATTRIB)
+#define IN_CLOEXEC SYMBOLIC(IN_CLOEXEC)
+#define IN_CLOSE SYMBOLIC(IN_CLOSE)
+#define IN_CLOSE_NOWRITE SYMBOLIC(IN_CLOSE_NOWRITE)
+#define IN_CLOSE_WRITE SYMBOLIC(IN_CLOSE_WRITE)
+#define IN_CREATE SYMBOLIC(IN_CREATE)
+#define IN_DELETE SYMBOLIC(IN_DELETE)
+#define IN_DELETE_SELF SYMBOLIC(IN_DELETE_SELF)
+#define IN_DONT_FOLLOW SYMBOLIC(IN_DONT_FOLLOW)
+#define IN_EXCL_UNLINK SYMBOLIC(IN_EXCL_UNLINK)
+#define IN_IGNORED SYMBOLIC(IN_IGNORED)
+#define IN_ISDIR SYMBOLIC(IN_ISDIR)
+#define IN_LOOPBACKNET SYMBOLIC(IN_LOOPBACKNET)
+#define IN_MASK_ADD SYMBOLIC(IN_MASK_ADD)
+#define IN_MODIFY SYMBOLIC(IN_MODIFY)
+#define IN_MOVE SYMBOLIC(IN_MOVE)
+#define IN_MOVED_FROM SYMBOLIC(IN_MOVED_FROM)
+#define IN_MOVED_TO SYMBOLIC(IN_MOVED_TO)
+#define IN_MOVE_SELF SYMBOLIC(IN_MOVE_SELF)
+#define IN_NONBLOCK SYMBOLIC(IN_NONBLOCK)
+#define IN_ONESHOT SYMBOLIC(IN_ONESHOT)
+#define IN_ONLYDIR SYMBOLIC(IN_ONLYDIR)
+#define IN_OPEN SYMBOLIC(IN_OPEN)
+#define IN_Q_OVERFLOW SYMBOLIC(IN_Q_OVERFLOW)
+#define IN_UNMOUNT SYMBOLIC(IN_UNMOUNT)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long IN_ACCESS;
+extern const long IN_ALL_EVENTS;
+extern const long IN_ATTRIB;
+extern const long IN_CLOEXEC;
+extern const long IN_CLOSE;
+extern const long IN_CLOSE_NOWRITE;
+extern const long IN_CLOSE_WRITE;
+extern const long IN_CREATE;
+extern const long IN_DELETE;
+extern const long IN_DELETE_SELF;
+extern const long IN_DONT_FOLLOW;
+extern const long IN_EXCL_UNLINK;
+extern const long IN_IGNORED;
+extern const long IN_ISDIR;
+extern const long IN_LOOPBACKNET;
+extern const long IN_MASK_ADD;
+extern const long IN_MODIFY;
+extern const long IN_MOVE;
+extern const long IN_MOVED_FROM;
+extern const long IN_MOVED_TO;
+extern const long IN_MOVE_SELF;
+extern const long IN_NONBLOCK;
+extern const long IN_ONESHOT;
+extern const long IN_ONLYDIR;
+extern const long IN_OPEN;
+extern const long IN_Q_OVERFLOW;
+extern const long IN_UNMOUNT;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/inaddr.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_INADDR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/**
+ * @fileoverview Well-known Internet addresses.
+ * These need to be hard-coded as little-endian, so htonl() is needed.
+ */
+
+extern const long INADDR_ALLHOSTS_GROUP;
+extern const long INADDR_ALLRTRS_GROUP;
+extern const long INADDR_ANY;
+extern const long INADDR_BROADCAST;
+extern const long INADDR_LOOPBACK;
+extern const long INADDR_MAX_LOCAL_GROUP;
+extern const long INADDR_NONE;
+extern const long INADDR_TESTNET1;
+extern const long INADDR_TESTNET2;
+extern const long INADDR_TESTNET3;
+extern const long INADDR_UNSPEC_GROUP;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define INADDR_ANY LITERALLY(0x00000000u)       /* 0.0.0.0 */
+#define INADDR_BROADCAST LITERALLY(0xffffffffu) /* 255.255.255.255 */
+#define INADDR_NONE LITERALLY(0xffffffffu)      /* 255.255.255.255 */
+#define INADDR_LOOPBACK LITERALLY(0x7f000001u)  /* 127.0.0.1 */
+#define INADDR_TESTNET1 LITERALLY(0xc0000200u)  /* 192.0.2.0/24 (RFC5737§3) */
+#define INADDR_TESTNET2 LITERALLY(0xc6336400u)  /* 198.51.100.0/24 */
+#define INADDR_TESTNET3 LITERALLY(0xcb007100u)  /* 203.0.113.0/24 */
+
+#define INADDR_ALLHOSTS_GROUP SYMBOLIC(INADDR_ALLHOSTS_GROUP)
+#define INADDR_ALLRTRS_GROUP SYMBOLIC(INADDR_ALLRTRS_GROUP)
+#define INADDR_MAX_LOCAL_GROUP SYMBOLIC(INADDR_MAX_LOCAL_GROUP)
+#define INADDR_UNSPEC_GROUP SYMBOLIC(INADDR_UNSPEC_GROUP)
+
+
+
+/*!BEGIN libc/sysv/consts/iov.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IOV_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long IOV_MAX;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define IOV_MAX SYMBOLIC(IOV_MAX)
+
+
+
+/*!BEGIN libc/sysv/consts/ip.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IP_H_
+
+#define IP_ADD_MEMBERSHIP SYMBOLIC(IP_ADD_MEMBERSHIP)
+#define IP_ADD_SOURCE_MEMBERSHIP SYMBOLIC(IP_ADD_SOURCE_MEMBERSHIP)
+#define IP_BIND_ADDRESS_NO_PORT SYMBOLIC(IP_BIND_ADDRESS_NO_PORT)
+#define IP_BLOCK_SOURCE SYMBOLIC(IP_BLOCK_SOURCE)
+#define IP_CHECKSUM SYMBOLIC(IP_CHECKSUM)
+#define IP_DEFAULT_MULTICAST_LOOP SYMBOLIC(IP_DEFAULT_MULTICAST_LOOP)
+#define IP_DEFAULT_MULTICAST_TTL SYMBOLIC(IP_DEFAULT_MULTICAST_TTL)
+#define IP_DROP_MEMBERSHIP SYMBOLIC(IP_DROP_MEMBERSHIP)
+#define IP_DROP_SOURCE_MEMBERSHIP SYMBOLIC(IP_DROP_SOURCE_MEMBERSHIP)
+#define IP_FREEBIND SYMBOLIC(IP_FREEBIND)
+#define IP_HDRINCL SYMBOLIC(IP_HDRINCL)
+#define IP_IPSEC_POLICY SYMBOLIC(IP_IPSEC_POLICY)
+#define IP_MAX_MEMBERSHIPS SYMBOLIC(IP_MAX_MEMBERSHIPS)
+#define IP_MINTTL SYMBOLIC(IP_MINTTL)
+#define IP_MSFILTER SYMBOLIC(IP_MSFILTER)
+#define IP_MTU SYMBOLIC(IP_MTU)
+#define IP_MTU_DISCOVER SYMBOLIC(IP_MTU_DISCOVER)
+#define IP_MULTICAST_ALL SYMBOLIC(IP_MULTICAST_ALL)
+#define IP_MULTICAST_IF SYMBOLIC(IP_MULTICAST_IF)
+#define IP_MULTICAST_LOOP SYMBOLIC(IP_MULTICAST_LOOP)
+#define IP_MULTICAST_TTL SYMBOLIC(IP_MULTICAST_TTL)
+#define IP_NODEFRAG SYMBOLIC(IP_NODEFRAG)
+#define IP_OPTIONS SYMBOLIC(IP_OPTIONS)
+#define IP_ORIGDSTADDR SYMBOLIC(IP_ORIGDSTADDR)
+#define IP_PASSSEC SYMBOLIC(IP_PASSSEC)
+#define IP_PKTINFO SYMBOLIC(IP_PKTINFO)
+#define IP_PKTOPTIONS SYMBOLIC(IP_PKTOPTIONS)
+#define IP_PMTUDISC SYMBOLIC(IP_PMTUDISC)
+#define IP_PMTUDISC_DO SYMBOLIC(IP_PMTUDISC_DO)
+#define IP_PMTUDISC_DONT SYMBOLIC(IP_PMTUDISC_DONT)
+#define IP_PMTUDISC_INTERFACE SYMBOLIC(IP_PMTUDISC_INTERFACE)
+#define IP_PMTUDISC_OMIT SYMBOLIC(IP_PMTUDISC_OMIT)
+#define IP_PMTUDISC_PROBE SYMBOLIC(IP_PMTUDISC_PROBE)
+#define IP_PMTUDISC_WANT SYMBOLIC(IP_PMTUDISC_WANT)
+#define IP_RECVERR SYMBOLIC(IP_RECVERR)
+#define IP_RECVOPTS SYMBOLIC(IP_RECVOPTS)
+#define IP_RECVORIGDSTADDR SYMBOLIC(IP_RECVORIGDSTADDR)
+#define IP_RECVRETOPTS SYMBOLIC(IP_RECVRETOPTS)
+#define IP_RECVTOS SYMBOLIC(IP_RECVTOS)
+#define IP_RECVTTL SYMBOLIC(IP_RECVTTL)
+#define IP_RETOPTS SYMBOLIC(IP_RETOPTS)
+#define IP_ROUTER_ALERT SYMBOLIC(IP_ROUTER_ALERT)
+#define IP_TOS SYMBOLIC(IP_TOS)
+#define IP_TRANSPARENT SYMBOLIC(IP_TRANSPARENT)
+#define IP_TTL SYMBOLIC(IP_TTL)
+#define IP_UNBLOCK_SOURCE SYMBOLIC(IP_UNBLOCK_SOURCE)
+#define IP_UNICAST_IF SYMBOLIC(IP_UNICAST_IF)
+#define IP_XFRM_POLICY SYMBOLIC(IP_XFRM_POLICY)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long IP_ADD_MEMBERSHIP;
+extern const long IP_ADD_SOURCE_MEMBERSHIP;
+extern const long IP_BIND_ADDRESS_NO_PORT;
+extern const long IP_BLOCK_SOURCE;
+extern const long IP_CHECKSUM;
+extern const long IP_DEFAULT_MULTICAST_LOOP;
+extern const long IP_DEFAULT_MULTICAST_TTL;
+extern const long IP_DROP_MEMBERSHIP;
+extern const long IP_DROP_SOURCE_MEMBERSHIP;
+extern const long IP_FREEBIND;
+extern const long IP_HDRINCL;
+extern const long IP_IPSEC_POLICY;
+extern const long IP_MAX_MEMBERSHIPS;
+extern const long IP_MINTTL;
+extern const long IP_MSFILTER;
+extern const long IP_MTU;
+extern const long IP_MTU_DISCOVER;
+extern const long IP_MULTICAST_ALL;
+extern const long IP_MULTICAST_IF;
+extern const long IP_MULTICAST_LOOP;
+extern const long IP_MULTICAST_TTL;
+extern const long IP_NODEFRAG;
+extern const long IP_OPTIONS;
+extern const long IP_ORIGDSTADDR;
+extern const long IP_PASSSEC;
+extern const long IP_PKTINFO;
+extern const long IP_PKTOPTIONS;
+extern const long IP_PMTUDISC;
+extern const long IP_PMTUDISC_DO;
+extern const long IP_PMTUDISC_DONT;
+extern const long IP_PMTUDISC_INTERFACE;
+extern const long IP_PMTUDISC_OMIT;
+extern const long IP_PMTUDISC_PROBE;
+extern const long IP_PMTUDISC_WANT;
+extern const long IP_RECVERR;
+extern const long IP_RECVOPTS;
+extern const long IP_RECVORIGDSTADDR;
+extern const long IP_RECVRETOPTS;
+extern const long IP_RECVTOS;
+extern const long IP_RECVTTL;
+extern const long IP_RETOPTS;
+extern const long IP_ROUTER_ALERT;
+extern const long IP_TOS;
+extern const long IP_TRANSPARENT;
+extern const long IP_TTL;
+extern const long IP_UNBLOCK_SOURCE;
+extern const long IP_UNICAST_IF;
+extern const long IP_XFRM_POLICY;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/ipc.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IPC_H_
+
+#define IPC_CREAT SYMBOLIC(IPC_CREAT)
+#define IPC_EXCL SYMBOLIC(IPC_EXCL)
+#define IPC_INFO SYMBOLIC(IPC_INFO)
+#define IPC_NOWAIT SYMBOLIC(IPC_NOWAIT)
+#define IPC_PRIVATE SYMBOLIC(IPC_PRIVATE)
+#define IPC_RMID SYMBOLIC(IPC_RMID)
+#define IPC_SET SYMBOLIC(IPC_SET)
+#define IPC_STAT SYMBOLIC(IPC_STAT)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long IPC_CREAT;
+extern const long IPC_EXCL;
+extern const long IPC_INFO;
+extern const long IPC_NOWAIT;
+extern const long IPC_PRIVATE;
+extern const long IPC_RMID;
+extern const long IPC_SET;
+extern const long IPC_STAT;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/ipport.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IPPORT_H_
+
+/**
+ * ARPA network ports.
+ */
+#define IPPORT_ECHO 7
+#define IPPORT_DISCARD 9
+#define IPPORT_SYSTAT 11
+#define IPPORT_DAYTIME 13
+#define IPPORT_NETSTAT 15
+#define IPPORT_FTP 21
+#define IPPORT_TELNET 23
+#define IPPORT_SMTP 25
+#define IPPORT_TIMESERVER 37
+#define IPPORT_NAMESERVER 42
+#define IPPORT_WHOIS 43
+#define IPPORT_MTP 57
+#define IPPORT_TFTP 69
+#define IPPORT_RJE 77
+#define IPPORT_FINGER 79
+#define IPPORT_TTYLINK 87
+#define IPPORT_SUPDUP 95
+#define IPPORT_EXECSERVER 512
+#define IPPORT_LOGINSERVER 513
+#define IPPORT_CMDSERVER 514
+#define IPPORT_EFSSERVER 520
+#define IPPORT_BIFFUDP 512
+#define IPPORT_WHOSERVER 513
+#define IPPORT_ROUTESERVER 520
+#define IPPORT_RESERVED 1024
+#define IPPORT_USERRESERVED 5000
+
+/**
+ * Modern network ports.
+ */
+#define IPPORT_SSH 22
+#define IPPORT_DOMAIN 53
+#define IPPORT_HTTP 80
+#define IPPORT_POP3 110
+#define IPPORT_SFTP 115
+#define IPPORT_NTP 123
+#define IPPORT_IMAP2 143
+#define IPPORT_NETBIOS_NS 137
+#define IPPORT_NETBIOS_DGM 138
+#define IPPORT_NETBIOS_SSN 139
+#define IPPORT_BGP 179
+#define IPPORT_IRC 194
+#define IPPORT_HTTPS 443
+#define IPPORT_PRINTER 515
+#define IPPORT_NFS 2049
+#define IPPORT_DISTCC 3632
+#define IPPORT_SIP 5060
+#define IPPORT_POSTGRESQL 5432
+#define IPPORT_X11 6000
+#define IPPORT_GIT 9418
+#define IPPORT_IRCD 6667
+#define IPPORT_IMAPS 993
+#define IPPORT_POP3S 995
+
+
+
+/*!BEGIN libc/sysv/consts/ipproto.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IPPROTO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long IPPROTO_AH;
+extern const long IPPROTO_BEETPH;
+extern const long IPPROTO_COMP;
+extern const long IPPROTO_DCCP;
+extern const long IPPROTO_DSTOPTS;
+extern const long IPPROTO_EGP;
+extern const long IPPROTO_ENCAP;
+extern const long IPPROTO_ESP;
+extern const long IPPROTO_FRAGMENT;
+extern const long IPPROTO_GRE;
+extern const long IPPROTO_HOPOPTS;
+extern const long IPPROTO_ICMP;
+extern const long IPPROTO_ICMPV6;
+extern const long IPPROTO_IDP;
+extern const long IPPROTO_IGMP;
+extern const long IPPROTO_IP;
+extern const long IPPROTO_IPIP;
+extern const long IPPROTO_IPV6;
+extern const long IPPROTO_MAX;
+extern const long IPPROTO_MH;
+extern const long IPPROTO_MPLS;
+extern const long IPPROTO_MTP;
+extern const long IPPROTO_NONE;
+extern const long IPPROTO_PIM;
+extern const long IPPROTO_PUP;
+extern const long IPPROTO_RAW;
+extern const long IPPROTO_ROUTING;
+extern const long IPPROTO_RSVP;
+extern const long IPPROTO_SCTP;
+extern const long IPPROTO_TCP;
+extern const long IPPROTO_TP;
+extern const long IPPROTO_UDP;
+extern const long IPPROTO_UDPLITE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define IPPROTO_IP   LITERALLY(0)
+#define IPPROTO_ICMP LITERALLY(1)
+#define IPPROTO_TCP  LITERALLY(6)
+#define IPPROTO_UDP  LITERALLY(17)
+#define IPPROTO_RAW  LITERALLY(255)
+
+#define IPPROTO_AH       SYMBOLIC(IPPROTO_AH)
+#define IPPROTO_BEETPH   SYMBOLIC(IPPROTO_BEETPH)
+#define IPPROTO_COMP     SYMBOLIC(IPPROTO_COMP)
+#define IPPROTO_DCCP     SYMBOLIC(IPPROTO_DCCP)
+#define IPPROTO_DSTOPTS  SYMBOLIC(IPPROTO_DSTOPTS)
+#define IPPROTO_EGP      SYMBOLIC(IPPROTO_EGP)
+#define IPPROTO_ENCAP    SYMBOLIC(IPPROTO_ENCAP)
+#define IPPROTO_ESP      SYMBOLIC(IPPROTO_ESP)
+#define IPPROTO_FRAGMENT SYMBOLIC(IPPROTO_FRAGMENT)
+#define IPPROTO_GRE      SYMBOLIC(IPPROTO_GRE)
+#define IPPROTO_HOPOPTS  SYMBOLIC(IPPROTO_HOPOPTS)
+#define IPPROTO_ICMPV6   SYMBOLIC(IPPROTO_ICMPV6)
+#define IPPROTO_IDP      SYMBOLIC(IPPROTO_IDP)
+#define IPPROTO_IGMP     SYMBOLIC(IPPROTO_IGMP)
+#define IPPROTO_IPIP     SYMBOLIC(IPPROTO_IPIP)
+#define IPPROTO_IPV6     SYMBOLIC(IPPROTO_IPV6)
+#define IPPROTO_MAX      SYMBOLIC(IPPROTO_MAX)
+#define IPPROTO_MH       SYMBOLIC(IPPROTO_MH)
+#define IPPROTO_MPLS     SYMBOLIC(IPPROTO_MPLS)
+#define IPPROTO_MTP      SYMBOLIC(IPPROTO_MTP)
+#define IPPROTO_NONE     SYMBOLIC(IPPROTO_NONE)
+#define IPPROTO_PIM      SYMBOLIC(IPPROTO_PIM)
+#define IPPROTO_PUP      SYMBOLIC(IPPROTO_PUP)
+#define IPPROTO_ROUTING  SYMBOLIC(IPPROTO_ROUTING)
+#define IPPROTO_RSVP     SYMBOLIC(IPPROTO_RSVP)
+#define IPPROTO_SCTP     SYMBOLIC(IPPROTO_SCTP)
+#define IPPROTO_TP       SYMBOLIC(IPPROTO_TP)
+#define IPPROTO_UDPLITE  SYMBOLIC(IPPROTO_UDPLITE)
+
+
+
+/*!BEGIN libc/sysv/consts/ipv6.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IPV6_H_
+
+#define IPV6_2292DSTOPTS SYMBOLIC(IPV6_2292DSTOPTS)
+#define IPV6_2292HOPLIMIT SYMBOLIC(IPV6_2292HOPLIMIT)
+#define IPV6_2292HOPOPTS SYMBOLIC(IPV6_2292HOPOPTS)
+#define IPV6_2292PKTINFO SYMBOLIC(IPV6_2292PKTINFO)
+#define IPV6_2292PKTOPTIONS SYMBOLIC(IPV6_2292PKTOPTIONS)
+#define IPV6_2292RTHDR SYMBOLIC(IPV6_2292RTHDR)
+#define IPV6_ADDRFORM SYMBOLIC(IPV6_ADDRFORM)
+#define IPV6_ADD_MEMBERSHIP SYMBOLIC(IPV6_ADD_MEMBERSHIP)
+#define IPV6_AUTHHDR SYMBOLIC(IPV6_AUTHHDR)
+#define IPV6_AUTOFLOWLABEL SYMBOLIC(IPV6_AUTOFLOWLABEL)
+#define IPV6_CHECKSUM SYMBOLIC(IPV6_CHECKSUM)
+#define IPV6_DONTFRAG SYMBOLIC(IPV6_DONTFRAG)
+#define IPV6_DROP_MEMBERSHIP SYMBOLIC(IPV6_DROP_MEMBERSHIP)
+#define IPV6_DSTOPTS SYMBOLIC(IPV6_DSTOPTS)
+#define IPV6_HDRINCL SYMBOLIC(IPV6_HDRINCL)
+#define IPV6_HOPLIMIT SYMBOLIC(IPV6_HOPLIMIT)
+#define IPV6_HOPOPTS SYMBOLIC(IPV6_HOPOPTS)
+#define IPV6_IPSEC_POLICY SYMBOLIC(IPV6_IPSEC_POLICY)
+#define IPV6_JOIN_ANYCAST SYMBOLIC(IPV6_JOIN_ANYCAST)
+#define IPV6_JOIN_GROUP SYMBOLIC(IPV6_JOIN_GROUP)
+#define IPV6_LEAVE_ANYCAST SYMBOLIC(IPV6_LEAVE_ANYCAST)
+#define IPV6_LEAVE_GROUP SYMBOLIC(IPV6_LEAVE_GROUP)
+#define IPV6_MINHOPCOUNT SYMBOLIC(IPV6_MINHOPCOUNT)
+#define IPV6_MTU SYMBOLIC(IPV6_MTU)
+#define IPV6_MTU_DISCOVER SYMBOLIC(IPV6_MTU_DISCOVER)
+#define IPV6_MULTICAST_HOPS SYMBOLIC(IPV6_MULTICAST_HOPS)
+#define IPV6_MULTICAST_IF SYMBOLIC(IPV6_MULTICAST_IF)
+#define IPV6_MULTICAST_LOOP SYMBOLIC(IPV6_MULTICAST_LOOP)
+#define IPV6_NEXTHOP SYMBOLIC(IPV6_NEXTHOP)
+#define IPV6_ORIGDSTADDR SYMBOLIC(IPV6_ORIGDSTADDR)
+#define IPV6_PATHMTU SYMBOLIC(IPV6_PATHMTU)
+#define IPV6_PKTINFO SYMBOLIC(IPV6_PKTINFO)
+#define IPV6_PMTUDISC_DO SYMBOLIC(IPV6_PMTUDISC_DO)
+#define IPV6_PMTUDISC_DONT SYMBOLIC(IPV6_PMTUDISC_DONT)
+#define IPV6_PMTUDISC_INTERFACE SYMBOLIC(IPV6_PMTUDISC_INTERFACE)
+#define IPV6_PMTUDISC_OMIT SYMBOLIC(IPV6_PMTUDISC_OMIT)
+#define IPV6_PMTUDISC_PROBE SYMBOLIC(IPV6_PMTUDISC_PROBE)
+#define IPV6_PMTUDISC_WANT SYMBOLIC(IPV6_PMTUDISC_WANT)
+#define IPV6_RECVDSTOPTS SYMBOLIC(IPV6_RECVDSTOPTS)
+#define IPV6_RECVERR SYMBOLIC(IPV6_RECVERR)
+#define IPV6_RECVHOPLIMIT SYMBOLIC(IPV6_RECVHOPLIMIT)
+#define IPV6_RECVHOPOPTS SYMBOLIC(IPV6_RECVHOPOPTS)
+#define IPV6_RECVORIGDSTADDR SYMBOLIC(IPV6_RECVORIGDSTADDR)
+#define IPV6_RECVPATHMTU SYMBOLIC(IPV6_RECVPATHMTU)
+#define IPV6_RECVPKTINFO SYMBOLIC(IPV6_RECVPKTINFO)
+#define IPV6_RECVRTHDR SYMBOLIC(IPV6_RECVRTHDR)
+#define IPV6_RECVTCLASS SYMBOLIC(IPV6_RECVTCLASS)
+#define IPV6_ROUTER_ALERT SYMBOLIC(IPV6_ROUTER_ALERT)
+#define IPV6_RTHDR SYMBOLIC(IPV6_RTHDR)
+#define IPV6_RTHDRDSTOPTS SYMBOLIC(IPV6_RTHDRDSTOPTS)
+#define IPV6_RTHDR_LOOSE SYMBOLIC(IPV6_RTHDR_LOOSE)
+#define IPV6_RTHDR_STRICT SYMBOLIC(IPV6_RTHDR_STRICT)
+#define IPV6_RTHDR_TYPE_0 SYMBOLIC(IPV6_RTHDR_TYPE_0)
+#define IPV6_RXDSTOPTS SYMBOLIC(IPV6_RXDSTOPTS)
+#define IPV6_RXHOPOPTS SYMBOLIC(IPV6_RXHOPOPTS)
+#define IPV6_TCLASS SYMBOLIC(IPV6_TCLASS)
+#define IPV6_UNICAST_HOPS SYMBOLIC(IPV6_UNICAST_HOPS)
+#define IPV6_V6ONLY SYMBOLIC(IPV6_V6ONLY)
+#define IPV6_XFRM_POLICY SYMBOLIC(IPV6_XFRM_POLICY)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long IPV6_2292DSTOPTS;
+extern const long IPV6_2292HOPLIMIT;
+extern const long IPV6_2292HOPOPTS;
+extern const long IPV6_2292PKTINFO;
+extern const long IPV6_2292PKTOPTIONS;
+extern const long IPV6_2292RTHDR;
+extern const long IPV6_ADDRFORM;
+extern const long IPV6_ADD_MEMBERSHIP;
+extern const long IPV6_AUTHHDR;
+extern const long IPV6_AUTOFLOWLABEL;
+extern const long IPV6_CHECKSUM;
+extern const long IPV6_DONTFRAG;
+extern const long IPV6_DROP_MEMBERSHIP;
+extern const long IPV6_DSTOPTS;
+extern const long IPV6_HDRINCL;
+extern const long IPV6_HOPLIMIT;
+extern const long IPV6_HOPOPTS;
+extern const long IPV6_IPSEC_POLICY;
+extern const long IPV6_JOIN_ANYCAST;
+extern const long IPV6_JOIN_GROUP;
+extern const long IPV6_LEAVE_ANYCAST;
+extern const long IPV6_LEAVE_GROUP;
+extern const long IPV6_MINHOPCOUNT;
+extern const long IPV6_MTU;
+extern const long IPV6_MTU_DISCOVER;
+extern const long IPV6_MULTICAST_HOPS;
+extern const long IPV6_MULTICAST_IF;
+extern const long IPV6_MULTICAST_LOOP;
+extern const long IPV6_NEXTHOP;
+extern const long IPV6_ORIGDSTADDR;
+extern const long IPV6_PATHMTU;
+extern const long IPV6_PKTINFO;
+extern const long IPV6_PMTUDISC_DO;
+extern const long IPV6_PMTUDISC_DONT;
+extern const long IPV6_PMTUDISC_INTERFACE;
+extern const long IPV6_PMTUDISC_OMIT;
+extern const long IPV6_PMTUDISC_PROBE;
+extern const long IPV6_PMTUDISC_WANT;
+extern const long IPV6_RECVDSTOPTS;
+extern const long IPV6_RECVERR;
+extern const long IPV6_RECVHOPLIMIT;
+extern const long IPV6_RECVHOPOPTS;
+extern const long IPV6_RECVORIGDSTADDR;
+extern const long IPV6_RECVPATHMTU;
+extern const long IPV6_RECVPKTINFO;
+extern const long IPV6_RECVRTHDR;
+extern const long IPV6_RECVTCLASS;
+extern const long IPV6_ROUTER_ALERT;
+extern const long IPV6_RTHDR;
+extern const long IPV6_RTHDRDSTOPTS;
+extern const long IPV6_RTHDR_LOOSE;
+extern const long IPV6_RTHDR_STRICT;
+extern const long IPV6_RTHDR_TYPE_0;
+extern const long IPV6_RXDSTOPTS;
+extern const long IPV6_RXHOPOPTS;
+extern const long IPV6_TCLASS;
+extern const long IPV6_UNICAST_HOPS;
+extern const long IPV6_V6ONLY;
+extern const long IPV6_XFRM_POLICY;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/itimer.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_ITIMER_H_
+
+#define ITIMER_REAL 0
+#define ITIMER_VIRTUAL 1
+#define ITIMER_PROF 2
+
+
+
+/*!BEGIN libc/sysv/consts/limits.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_LIMITS_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long PIPE_BUF;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define PIPE_BUF SYMBOLIC(PIPE_BUF)
+
+
+
+/*!BEGIN libc/sysv/consts/lio.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_LIO_H_
+
+#define LIO_NOP SYMBOLIC(LIO_NOP)
+#define LIO_NOWAIT SYMBOLIC(LIO_NOWAIT)
+#define LIO_READ SYMBOLIC(LIO_READ)
+#define LIO_WAIT SYMBOLIC(LIO_WAIT)
+#define LIO_WRITE SYMBOLIC(LIO_WRITE)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long LIO_NOP;
+extern const long LIO_NOWAIT;
+extern const long LIO_READ;
+extern const long LIO_WAIT;
+extern const long LIO_WRITE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/lock.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_LOCK_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long LOCK_EX;
+extern const long LOCK_NB;
+extern const long LOCK_SH;
+extern const long LOCK_UN;
+extern const long LOCK_UNLOCK_CACHE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define LOCK_EX LITERALLY(2)
+#define LOCK_NB SYMBOLIC(LOCK_NB)
+#define LOCK_SH SYMBOLIC(LOCK_SH)
+#define LOCK_UN SYMBOLIC(LOCK_UN)
+#define LOCK_UNLOCK_CACHE SYMBOLIC(LOCK_UNLOCK_CACHE)
+
+
+
+/*!BEGIN libc/sysv/consts/log.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_LOG_H_
+
+#define LOG_ALERT SYMBOLIC(LOG_ALERT)
+#define LOG_AUTH SYMBOLIC(LOG_AUTH)
+#define LOG_CONS SYMBOLIC(LOG_CONS)
+#define LOG_CRIT SYMBOLIC(LOG_CRIT)
+#define LOG_CRON SYMBOLIC(LOG_CRON)
+#define LOG_DAEMON SYMBOLIC(LOG_DAEMON)
+#define LOG_DEBUG SYMBOLIC(LOG_DEBUG)
+#define LOG_EMERG SYMBOLIC(LOG_EMERG)
+#define LOG_ERR SYMBOLIC(LOG_ERR)
+#define LOG_FACMASK SYMBOLIC(LOG_FACMASK)
+#define LOG_INFO SYMBOLIC(LOG_INFO)
+#define LOG_KERN SYMBOLIC(LOG_KERN)
+#define LOG_LOCAL0 SYMBOLIC(LOG_LOCAL0)
+#define LOG_LOCAL1 SYMBOLIC(LOG_LOCAL1)
+#define LOG_LOCAL2 SYMBOLIC(LOG_LOCAL2)
+#define LOG_LOCAL3 SYMBOLIC(LOG_LOCAL3)
+#define LOG_LOCAL4 SYMBOLIC(LOG_LOCAL4)
+#define LOG_LOCAL5 SYMBOLIC(LOG_LOCAL5)
+#define LOG_LOCAL6 SYMBOLIC(LOG_LOCAL6)
+#define LOG_LOCAL7 SYMBOLIC(LOG_LOCAL7)
+#define LOG_LPR SYMBOLIC(LOG_LPR)
+#define LOG_MAIL SYMBOLIC(LOG_MAIL)
+#define LOG_NDELAY SYMBOLIC(LOG_NDELAY)
+#define LOG_NEWS SYMBOLIC(LOG_NEWS)
+#define LOG_NFACILITIES SYMBOLIC(LOG_NFACILITIES)
+#define LOG_NOTICE SYMBOLIC(LOG_NOTICE)
+#define LOG_NOWAIT SYMBOLIC(LOG_NOWAIT)
+#define LOG_ODELAY SYMBOLIC(LOG_ODELAY)
+#define LOG_PERROR SYMBOLIC(LOG_PERROR)
+#define LOG_PID SYMBOLIC(LOG_PID)
+#define LOG_PRIMASK SYMBOLIC(LOG_PRIMASK)
+#define LOG_SELECT SYMBOLIC(LOG_SELECT)
+#define LOG_SENSE SYMBOLIC(LOG_SENSE)
+#define LOG_SYSLOG SYMBOLIC(LOG_SYSLOG)
+#define LOG_USER SYMBOLIC(LOG_USER)
+#define LOG_UUCP SYMBOLIC(LOG_UUCP)
+#define LOG_WARNING SYMBOLIC(LOG_WARNING)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long LOG_ALERT;
+extern const long LOG_AUTH;
+extern const long LOG_CONS;
+extern const long LOG_CRIT;
+extern const long LOG_CRON;
+extern const long LOG_DAEMON;
+extern const long LOG_DEBUG;
+extern const long LOG_EMERG;
+extern const long LOG_ERR;
+extern const long LOG_FACMASK;
+extern const long LOG_INFO;
+extern const long LOG_KERN;
+extern const long LOG_LOCAL0;
+extern const long LOG_LOCAL1;
+extern const long LOG_LOCAL2;
+extern const long LOG_LOCAL3;
+extern const long LOG_LOCAL4;
+extern const long LOG_LOCAL5;
+extern const long LOG_LOCAL6;
+extern const long LOG_LOCAL7;
+extern const long LOG_LPR;
+extern const long LOG_MAIL;
+extern const long LOG_NDELAY;
+extern const long LOG_NEWS;
+extern const long LOG_NFACILITIES;
+extern const long LOG_NOTICE;
+extern const long LOG_NOWAIT;
+extern const long LOG_ODELAY;
+extern const long LOG_PERROR;
+extern const long LOG_PID;
+extern const long LOG_PRIMASK;
+extern const long LOG_SELECT;
+extern const long LOG_SENSE;
+extern const long LOG_SYSLOG;
+extern const long LOG_USER;
+extern const long LOG_UUCP;
+extern const long LOG_WARNING;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/madv.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MADV_H_
+
+#define MADV_DODUMP SYMBOLIC(MADV_DODUMP)
+#define MADV_DOFORK SYMBOLIC(MADV_DOFORK)
+#define MADV_DONTDUMP SYMBOLIC(MADV_DONTDUMP)
+#define MADV_DONTFORK SYMBOLIC(MADV_DONTFORK)
+#define MADV_DONTNEED SYMBOLIC(MADV_DONTNEED)
+#define MADV_FREE SYMBOLIC(MADV_FREE)
+#define MADV_HUGEPAGE SYMBOLIC(MADV_HUGEPAGE)
+#define MADV_HWPOISON SYMBOLIC(MADV_HWPOISON)
+#define MADV_MERGEABLE SYMBOLIC(MADV_MERGEABLE)
+#define MADV_NOHUGEPAGE SYMBOLIC(MADV_NOHUGEPAGE)
+#define MADV_NORMAL SYMBOLIC(MADV_NORMAL)
+#define MADV_RANDOM SYMBOLIC(MADV_RANDOM)
+#define MADV_REMOVE SYMBOLIC(MADV_REMOVE)
+#define MADV_SEQUENTIAL SYMBOLIC(MADV_SEQUENTIAL)
+#define MADV_UNMERGEABLE SYMBOLIC(MADV_UNMERGEABLE)
+#define MADV_WILLNEED SYMBOLIC(MADV_WILLNEED)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long MADV_DODUMP;
+extern const long MADV_DOFORK;
+extern const long MADV_DONTDUMP;
+extern const long MADV_DONTFORK;
+extern const long MADV_DONTNEED;
+extern const long MADV_FREE;
+extern const long MADV_HUGEPAGE;
+extern const long MADV_HWPOISON;
+extern const long MADV_MERGEABLE;
+extern const long MADV_NOHUGEPAGE;
+extern const long MADV_NORMAL;
+extern const long MADV_RANDOM;
+extern const long MADV_REMOVE;
+extern const long MADV_SEQUENTIAL;
+extern const long MADV_UNMERGEABLE;
+extern const long MADV_WILLNEED;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/map.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MAP_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long MAP_32BIT;
+extern const long MAP_ANON;
+extern const long MAP_ANONYMOUS;
+extern const long MAP_DENYWRITE;
+extern const long MAP_EXECUTABLE;
+extern const long MAP_FILE;
+extern const long MAP_FIXED;
+extern const long MAP_GROWSDOWN;
+extern const long MAP_HUGETLB;
+extern const long MAP_HUGE_MASK;
+extern const long MAP_HUGE_SHIFT;
+extern const long MAP_LOCKED;
+extern const long MAP_NONBLOCK;
+extern const long MAP_NORESERVE;
+extern const long MAP_POPULATE;
+extern const long MAP_PRIVATE;
+extern const long MAP_SHARED;
+extern const long MAP_TYPE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define MAP_FILE    0
+#define MAP_SHARED  1
+#define MAP_PRIVATE 2
+#define MAP_FIXED   16
+
+#define MAP_32BIT      SYMBOLIC(MAP_32BIT)
+#define MAP_ANONYMOUS  SYMBOLIC(MAP_ANONYMOUS)
+#define MAP_CONCEAL    SYMBOLIC(MAP_CONCEAL)
+#define MAP_DENYWRITE  SYMBOLIC(MAP_DENYWRITE)
+#define MAP_EXECUTABLE SYMBOLIC(MAP_EXECUTABLE)
+#define MAP_GROWSDOWN  SYMBOLIC(MAP_GROWSDOWN)
+#define MAP_HUGETLB    SYMBOLIC(MAP_HUGETLB)
+#define MAP_HUGE_MASK  SYMBOLIC(MAP_HUGE_MASK)
+#define MAP_HUGE_SHIFT SYMBOLIC(MAP_HUGE_SHIFT)
+#define MAP_LOCKED     SYMBOLIC(MAP_LOCKED)
+#define MAP_NONBLOCK   SYMBOLIC(MAP_NONBLOCK)
+#define MAP_NORESERVE  SYMBOLIC(MAP_NORESERVE)
+#define MAP_POPULATE   SYMBOLIC(MAP_POPULATE)
+#define MAP_TYPE       SYMBOLIC(MAP_TYPE)
+
+#define MAP_ANON   MAP_ANONYMOUS
+#define MAP_NOCORE MAP_CONCEAL
+#define MAP_STACK  MAP_GROWSDOWN
+
+
+
+/*!BEGIN libc/sysv/consts/mcast.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MCAST_H_
+
+#define MCAST_BLOCK_SOURCE SYMBOLIC(MCAST_BLOCK_SOURCE)
+#define MCAST_EXCLUDE SYMBOLIC(MCAST_EXCLUDE)
+#define MCAST_INCLUDE SYMBOLIC(MCAST_INCLUDE)
+#define MCAST_JOIN_GROUP SYMBOLIC(MCAST_JOIN_GROUP)
+#define MCAST_JOIN_SOURCE_GROUP SYMBOLIC(MCAST_JOIN_SOURCE_GROUP)
+#define MCAST_LEAVE_GROUP SYMBOLIC(MCAST_LEAVE_GROUP)
+#define MCAST_LEAVE_SOURCE_GROUP SYMBOLIC(MCAST_LEAVE_SOURCE_GROUP)
+#define MCAST_MSFILTER SYMBOLIC(MCAST_MSFILTER)
+#define MCAST_UNBLOCK_SOURCE SYMBOLIC(MCAST_UNBLOCK_SOURCE)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long MCAST_BLOCK_SOURCE;
+extern const long MCAST_EXCLUDE;
+extern const long MCAST_INCLUDE;
+extern const long MCAST_JOIN_GROUP;
+extern const long MCAST_JOIN_SOURCE_GROUP;
+extern const long MCAST_LEAVE_GROUP;
+extern const long MCAST_LEAVE_SOURCE_GROUP;
+extern const long MCAST_MSFILTER;
+extern const long MCAST_UNBLOCK_SOURCE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/mfd.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MFD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long MFD_CLOEXEC;
+extern const long MFD_ALLOW_SEALING;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define MFD_CLOEXEC       SYMBOLIC(MFD_CLOEXEC)
+#define MFD_ALLOW_SEALING SYMBOLIC(MFD_ALLOW_SEALING)
+
+
+
+/*!BEGIN libc/sysv/consts/mlock.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MLOCK_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long MCL_CURRENT;
+extern const long MCL_FUTURE;
+extern const long MCL_ONFAULT;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define MCL_CURRENT LITERALLY(1)
+#define MCL_FUTURE  LITERALLY(2)
+#define MCL_ONFAULT SYMBOLIC(MCL_ONFAULT)
+
+
+
+/*!BEGIN libc/sysv/consts/mnt.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MNT_H_
+
+#define MNT_DETACH SYMBOLIC(MNT_DETACH)
+#define MNT_EXPIRE SYMBOLIC(MNT_EXPIRE)
+#define MNT_FORCE SYMBOLIC(MNT_FORCE)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long MNT_DETACH;
+extern const long MNT_EXPIRE;
+extern const long MNT_FORCE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/modem.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MODEM_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long TIOCMGET;
+extern const long TIOCMSET;
+extern const long TIOCMBIC;
+extern const long TIOCMBIS;
+
+extern const long TIOCM_CAR;
+extern const long TIOCM_CD;
+extern const long TIOCM_CTS;
+extern const long TIOCM_DSR;
+extern const long TIOCM_DTR;
+extern const long TIOCM_LE;
+extern const long TIOCM_RI;
+extern const long TIOCM_RNG;
+extern const long TIOCM_RTS;
+extern const long TIOCM_SR;
+extern const long TIOCM_ST;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define TIOCMGET SYMBOLIC(TIOCMGET)
+#define TIOCMSET SYMBOLIC(TIOCMSET)
+#define TIOCMBIC SYMBOLIC(TIOCMBIC)
+#define TIOCMBIS SYMBOLIC(TIOCMBIS)
+
+#define TIOCM_LE  LITERALLY(0x01)
+#define TIOCM_DTR LITERALLY(0x02)
+#define TIOCM_RTS LITERALLY(0x04)
+#define TIOCM_ST  LITERALLY(0x08)
+#define TIOCM_SR  LITERALLY(0x10)
+#define TIOCM_CTS LITERALLY(0x20)
+#define TIOCM_CAR LITERALLY(0x40)
+#define TIOCM_CD  LITERALLY(0x40)
+#define TIOCM_RI  LITERALLY(0x80)
+#define TIOCM_RNG LITERALLY(0x80)
+#define TIOCM_DSR LITERALLY(0x0100)
+
+
+
+/*!BEGIN libc/sysv/consts/mount.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MOUNT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long MS_ACTIVE;
+extern const long MS_BIND;
+extern const long MS_DIRSYNC;
+extern const long MS_I_VERSION;
+extern const long MS_KERNMOUNT;
+extern const long MS_LAZYTIME;
+extern const long MS_MANDLOCK;
+extern const long MS_MGC_MSK;
+extern const long MS_MGC_VAL;
+extern const long MS_MOVE;
+extern const long MS_NOATIME;
+extern const long MS_NODEV;
+extern const long MS_NODIRATIME;
+extern const long MS_NOEXEC;
+extern const long MS_NOSUID;
+extern const long MS_NOUSER;
+extern const long MS_POSIXACL;
+extern const long MS_PRIVATE;
+extern const long MS_RDONLY;
+extern const long MS_REC;
+extern const long MS_RELATIME;
+extern const long MS_REMOUNT;
+extern const long MS_RMT_MASK;
+extern const long MS_SHARED;
+extern const long MS_SILENT;
+extern const long MS_SLAVE;
+extern const long MS_STRICTATIME;
+extern const long MS_SYNCHRONOUS;
+extern const long MS_UNBINDABLE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define MS_ACTIVE      SYMBOLIC(MS_ACTIVE)
+#define MS_BIND        SYMBOLIC(MS_BIND)
+#define MS_DIRSYNC     SYMBOLIC(MS_DIRSYNC)
+#define MS_I_VERSION   SYMBOLIC(MS_I_VERSION)
+#define MS_KERNMOUNT   SYMBOLIC(MS_KERNMOUNT)
+#define MS_LAZYTIME    SYMBOLIC(MS_LAZYTIME)
+#define MS_MANDLOCK    SYMBOLIC(MS_MANDLOCK)
+#define MS_MGC_MSK     SYMBOLIC(MS_MGC_MSK)
+#define MS_MGC_VAL     SYMBOLIC(MS_MGC_VAL)
+#define MS_MOVE        SYMBOLIC(MS_MOVE)
+#define MS_NOATIME     SYMBOLIC(MS_NOATIME)
+#define MS_NODEV       SYMBOLIC(MS_NODEV)
+#define MS_NODIRATIME  SYMBOLIC(MS_NODIRATIME)
+#define MS_NOEXEC      SYMBOLIC(MS_NOEXEC)
+#define MS_NOSUID      SYMBOLIC(MS_NOSUID)
+#define MS_NOUSER      SYMBOLIC(MS_NOUSER)
+#define MS_POSIXACL    SYMBOLIC(MS_POSIXACL)
+#define MS_PRIVATE     SYMBOLIC(MS_PRIVATE)
+#define MS_RDONLY      SYMBOLIC(MS_RDONLY)
+#define MS_REC         SYMBOLIC(MS_REC)
+#define MS_RELATIME    SYMBOLIC(MS_RELATIME)
+#define MS_REMOUNT     SYMBOLIC(MS_REMOUNT)
+#define MS_RMT_MASK    SYMBOLIC(MS_RMT_MASK)
+#define MS_SHARED      SYMBOLIC(MS_SHARED)
+#define MS_SILENT      SYMBOLIC(MS_SILENT)
+#define MS_SLAVE       SYMBOLIC(MS_SLAVE)
+#define MS_STRICTATIME SYMBOLIC(MS_STRICTATIME)
+#define MS_SYNCHRONOUS SYMBOLIC(MS_SYNCHRONOUS)
+#define MS_UNBINDABLE  SYMBOLIC(MS_UNBINDABLE)
+
+
+
+/*!BEGIN libc/sysv/consts/mremap.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MREMAP_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long MREMAP_FIXED;
+extern const long MREMAP_MAYMOVE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define MREMAP_MAYMOVE LITERALLY(1)
+#define MREMAP_FIXED   LITERALLY(2)
+
+
+
+/*!BEGIN libc/sysv/consts/msg.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MSG_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long MSG_BATCH;
+extern const long MSG_CMSG_CLOEXEC;
+extern const long MSG_CONFIRM;
+extern const long MSG_CTRUNC;
+extern const long MSG_DONTROUTE;
+extern const long MSG_DONTWAIT;
+extern const long MSG_EOR;
+extern const long MSG_ERRQUEUE;
+extern const long MSG_EXCEPT;
+extern const long MSG_FASTOPEN;
+extern const long MSG_FIN;
+extern const long MSG_INFO;
+extern const long MSG_MORE;
+extern const long MSG_NOERROR;
+extern const long MSG_NOSIGNAL;
+extern const long MSG_OOB;
+extern const long MSG_PARITY_ERROR;
+extern const long MSG_PEEK;
+extern const long MSG_PROXY;
+extern const long MSG_RST;
+extern const long MSG_STAT;
+extern const long MSG_SYN;
+extern const long MSG_TRUNC;
+extern const long MSG_WAITALL;
+extern const long MSG_WAITFORONE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define MSG_BATCH SYMBOLIC(MSG_BATCH)
+#define MSG_CMSG_CLOEXEC SYMBOLIC(MSG_CMSG_CLOEXEC)
+#define MSG_CONFIRM SYMBOLIC(MSG_CONFIRM)
+#define MSG_CTRUNC SYMBOLIC(MSG_CTRUNC)
+#define MSG_DONTROUTE LITERALLY(4)
+#define MSG_DONTWAIT SYMBOLIC(MSG_DONTWAIT)
+#define MSG_EOR SYMBOLIC(MSG_EOR)
+#define MSG_ERRQUEUE SYMBOLIC(MSG_ERRQUEUE)
+#define MSG_EXCEPT SYMBOLIC(MSG_EXCEPT)
+#define MSG_FASTOPEN SYMBOLIC(MSG_FASTOPEN)
+#define MSG_FIN SYMBOLIC(MSG_FIN)
+#define MSG_INFO SYMBOLIC(MSG_INFO)
+#define MSG_MORE SYMBOLIC(MSG_MORE)
+#define MSG_NOERROR SYMBOLIC(MSG_NOERROR)
+#define MSG_NOSIGNAL SYMBOLIC(MSG_NOSIGNAL)
+#define MSG_OOB LITERALLY(1)
+#define MSG_PARITY_ERROR SYMBOLIC(MSG_PARITY_ERROR)
+#define MSG_PEEK LITERALLY(2)
+#define MSG_PROXY SYMBOLIC(MSG_PROXY)
+#define MSG_RST SYMBOLIC(MSG_RST)
+#define MSG_STAT SYMBOLIC(MSG_STAT)
+#define MSG_SYN SYMBOLIC(MSG_SYN)
+#define MSG_TRUNC SYMBOLIC(MSG_TRUNC)
+#define MSG_WAITALL SYMBOLIC(MSG_WAITALL)
+#define MSG_WAITFORONE SYMBOLIC(MSG_WAITFORONE)
+
+
+
+/*!BEGIN libc/sysv/consts/msync.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MSYNC_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long MS_SYNC;
+extern const long MS_ASYNC;
+extern const long MS_INVALIDATE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define MS_SYNC       SYMBOLIC(MS_SYNC)
+#define MS_ASYNC      LITERALLY(1)
+#define MS_INVALIDATE SYMBOLIC(MS_INVALIDATE)
+
+
+
+/*!BEGIN libc/sysv/consts/n.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_N_H_
+
+#define N_6PACK SYMBOLIC(N_6PACK)
+#define N_AX25 SYMBOLIC(N_AX25)
+#define N_HCI SYMBOLIC(N_HCI)
+#define N_HDLC SYMBOLIC(N_HDLC)
+#define N_IRDA SYMBOLIC(N_IRDA)
+#define N_MASC SYMBOLIC(N_MASC)
+#define N_MOUSE SYMBOLIC(N_MOUSE)
+#define N_PPP SYMBOLIC(N_PPP)
+#define N_PROFIBUS_FDL SYMBOLIC(N_PROFIBUS_FDL)
+#define N_R3964 SYMBOLIC(N_R3964)
+#define N_SLIP SYMBOLIC(N_SLIP)
+#define N_SMSBLOCK SYMBOLIC(N_SMSBLOCK)
+#define N_STRIP SYMBOLIC(N_STRIP)
+#define N_SYNC_PPP SYMBOLIC(N_SYNC_PPP)
+#define N_TTY SYMBOLIC(N_TTY)
+#define N_X25 SYMBOLIC(N_X25)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long N_6PACK;
+extern const long N_AX25;
+extern const long N_HCI;
+extern const long N_HDLC;
+extern const long N_IRDA;
+extern const long N_MASC;
+extern const long N_MOUSE;
+extern const long N_PPP;
+extern const long N_PROFIBUS_FDL;
+extern const long N_R3964;
+extern const long N_SLIP;
+extern const long N_SMSBLOCK;
+extern const long N_STRIP;
+extern const long N_SYNC_PPP;
+extern const long N_TTY;
+extern const long N_X25;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/nd.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_ND_H_
+
+#define ND_NA_FLAG_OVERRIDE SYMBOLIC(ND_NA_FLAG_OVERRIDE)
+#define ND_NA_FLAG_ROUTER SYMBOLIC(ND_NA_FLAG_ROUTER)
+#define ND_NA_FLAG_SOLICITED SYMBOLIC(ND_NA_FLAG_SOLICITED)
+#define ND_NEIGHBOR_ADVERT SYMBOLIC(ND_NEIGHBOR_ADVERT)
+#define ND_NEIGHBOR_SOLICIT SYMBOLIC(ND_NEIGHBOR_SOLICIT)
+#define ND_RA_FLAG_HOME_AGENT SYMBOLIC(ND_RA_FLAG_HOME_AGENT)
+#define ND_RA_FLAG_MANAGED SYMBOLIC(ND_RA_FLAG_MANAGED)
+#define ND_RA_FLAG_OTHER SYMBOLIC(ND_RA_FLAG_OTHER)
+#define ND_REDIRECT SYMBOLIC(ND_REDIRECT)
+#define ND_ROUTER_ADVERT SYMBOLIC(ND_ROUTER_ADVERT)
+#define ND_ROUTER_SOLICIT SYMBOLIC(ND_ROUTER_SOLICIT)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long ND_NA_FLAG_OVERRIDE;
+extern const long ND_NA_FLAG_ROUTER;
+extern const long ND_NA_FLAG_SOLICITED;
+extern const long ND_NEIGHBOR_ADVERT;
+extern const long ND_NEIGHBOR_SOLICIT;
+extern const long ND_RA_FLAG_HOME_AGENT;
+extern const long ND_RA_FLAG_MANAGED;
+extern const long ND_RA_FLAG_OTHER;
+extern const long ND_REDIRECT;
+extern const long ND_ROUTER_ADVERT;
+extern const long ND_ROUTER_SOLICIT;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/ok.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_OK_H_
+
+#define F_OK SYMBOLIC(F_OK)
+#define R_OK SYMBOLIC(R_OK)
+#define W_OK SYMBOLIC(W_OK)
+#define X_OK SYMBOLIC(X_OK)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long F_OK;
+extern const long R_OK;
+extern const long W_OK;
+extern const long X_OK;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/personality.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PERSONALITY_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long ADDR_COMPAT_LAYOUT;
+extern const long READ_IMPLIES_EXEC;
+extern const long ADDR_LIMIT_3GB;
+extern const long FDPIC_FUNCPTRS;
+extern const long STICKY_TIMEOUTS;
+extern const long MMAP_PAGE_ZERO;
+extern const long ADDR_LIMIT_32BIT;
+extern const long WHOLE_SECONDS;
+extern const long ADDR_NO_RANDOMIZE;
+extern const long SHORT_INODE;
+extern const long UNAME26;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define ADDR_COMPAT_LAYOUT SYMBOLIC(ADDR_COMPAT_LAYOUT)
+#define READ_IMPLIES_EXEC SYMBOLIC(READ_IMPLIES_EXEC)
+#define ADDR_LIMIT_3GB SYMBOLIC(ADDR_LIMIT_3GB)
+#define FDPIC_FUNCPTRS SYMBOLIC(FDPIC_FUNCPTRS)
+#define STICKY_TIMEOUTS SYMBOLIC(STICKY_TIMEOUTS)
+#define MMAP_PAGE_ZERO SYMBOLIC(MMAP_PAGE_ZERO)
+#define ADDR_LIMIT_32BIT SYMBOLIC(ADDR_LIMIT_32BIT)
+#define WHOLE_SECONDS SYMBOLIC(WHOLE_SECONDS)
+#define ADDR_NO_RANDOMIZE SYMBOLIC(ADDR_NO_RANDOMIZE)
+#define SHORT_INODE SYMBOLIC(SHORT_INODE)
+#define UNAME26 SYMBOLIC(UNAME26)
+
+
+
+/*!BEGIN libc/sysv/consts/pf.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PF_H_
+
+#define PF_ALG SYMBOLIC(PF_ALG)
+#define PF_APPLETALK SYMBOLIC(PF_APPLETALK)
+#define PF_ASH SYMBOLIC(PF_ASH)
+#define PF_ATMPVC SYMBOLIC(PF_ATMPVC)
+#define PF_ATMSVC SYMBOLIC(PF_ATMSVC)
+#define PF_AX25 SYMBOLIC(PF_AX25)
+#define PF_BLUETOOTH SYMBOLIC(PF_BLUETOOTH)
+#define PF_BRIDGE SYMBOLIC(PF_BRIDGE)
+#define PF_CAIF SYMBOLIC(PF_CAIF)
+#define PF_CAN SYMBOLIC(PF_CAN)
+#define PF_ECONET SYMBOLIC(PF_ECONET)
+#define PF_FILE SYMBOLIC(PF_FILE)
+#define PF_IB SYMBOLIC(PF_IB)
+#define PF_IEEE802154 SYMBOLIC(PF_IEEE802154)
+#define PF_INET SYMBOLIC(PF_INET)
+#define PF_INET6 SYMBOLIC(PF_INET6)
+#define PF_IPX SYMBOLIC(PF_IPX)
+#define PF_IRDA SYMBOLIC(PF_IRDA)
+#define PF_ISDN SYMBOLIC(PF_ISDN)
+#define PF_IUCV SYMBOLIC(PF_IUCV)
+#define PF_KCM SYMBOLIC(PF_KCM)
+#define PF_KEY SYMBOLIC(PF_KEY)
+#define PF_LLC SYMBOLIC(PF_LLC)
+#define PF_LOCAL SYMBOLIC(PF_LOCAL)
+#define PF_MAX SYMBOLIC(PF_MAX)
+#define PF_MPLS SYMBOLIC(PF_MPLS)
+#define PF_NETBEUI SYMBOLIC(PF_NETBEUI)
+#define PF_NETLINK SYMBOLIC(PF_NETLINK)
+#define PF_NETROM SYMBOLIC(PF_NETROM)
+#define PF_NFC SYMBOLIC(PF_NFC)
+#define PF_PACKET SYMBOLIC(PF_PACKET)
+#define PF_PHONET SYMBOLIC(PF_PHONET)
+#define PF_PPPOX SYMBOLIC(PF_PPPOX)
+#define PF_RDS SYMBOLIC(PF_RDS)
+#define PF_ROSE SYMBOLIC(PF_ROSE)
+#define PF_ROUTE SYMBOLIC(PF_ROUTE)
+#define PF_RXRPC SYMBOLIC(PF_RXRPC)
+#define PF_SECURITY SYMBOLIC(PF_SECURITY)
+#define PF_SNA SYMBOLIC(PF_SNA)
+#define PF_TIPC SYMBOLIC(PF_TIPC)
+#define PF_UNIX SYMBOLIC(PF_UNIX)
+#define PF_UNSPEC SYMBOLIC(PF_UNSPEC)
+#define PF_VSOCK SYMBOLIC(PF_VSOCK)
+#define PF_WANPIPE SYMBOLIC(PF_WANPIPE)
+#define PF_X25 SYMBOLIC(PF_X25)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long PF_ALG;
+extern const long PF_APPLETALK;
+extern const long PF_ASH;
+extern const long PF_ATMPVC;
+extern const long PF_ATMSVC;
+extern const long PF_AX25;
+extern const long PF_BLUETOOTH;
+extern const long PF_BRIDGE;
+extern const long PF_CAIF;
+extern const long PF_CAN;
+extern const long PF_ECONET;
+extern const long PF_FILE;
+extern const long PF_IB;
+extern const long PF_IEEE802154;
+extern const long PF_INET6;
+extern const long PF_INET;
+extern const long PF_IPX;
+extern const long PF_IRDA;
+extern const long PF_ISDN;
+extern const long PF_IUCV;
+extern const long PF_KCM;
+extern const long PF_KEY;
+extern const long PF_LLC;
+extern const long PF_LOCAL;
+extern const long PF_MAX;
+extern const long PF_MPLS;
+extern const long PF_NETBEUI;
+extern const long PF_NETLINK;
+extern const long PF_NETROM;
+extern const long PF_NFC;
+extern const long PF_PACKET;
+extern const long PF_PHONET;
+extern const long PF_PPPOX;
+extern const long PF_RDS;
+extern const long PF_ROSE;
+extern const long PF_ROUTE;
+extern const long PF_RXRPC;
+extern const long PF_SECURITY;
+extern const long PF_SNA;
+extern const long PF_TIPC;
+extern const long PF_UNIX;
+extern const long PF_UNSPEC;
+extern const long PF_VSOCK;
+extern const long PF_WANPIPE;
+extern const long PF_X25;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/poll.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_POLL_H_
+
+#define POLLERR    SYMBOLIC(POLLERR)
+#define POLLHUP    SYMBOLIC(POLLHUP)
+#define POLLIN     SYMBOLIC(POLLIN)
+#define POLLNVAL   SYMBOLIC(POLLNVAL)
+#define POLLOUT    SYMBOLIC(POLLOUT)
+#define POLLPRI    SYMBOLIC(POLLPRI)
+#define POLLRDBAND SYMBOLIC(POLLRDBAND)
+#define POLLRDHUP  SYMBOLIC(POLLRDHUP)
+#define POLLRDNORM SYMBOLIC(POLLRDNORM)
+#define POLLWRBAND SYMBOLIC(POLLWRBAND)
+#define POLLWRNORM SYMBOLIC(POLLWRNORM)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const int16_t POLLERR;
+extern const int16_t POLLHUP;
+extern const int16_t POLLIN;
+extern const int16_t POLLNVAL;
+extern const int16_t POLLOUT;
+extern const int16_t POLLPRI;
+extern const int16_t POLLRDBAND;
+extern const int16_t POLLRDHUP;
+extern const int16_t POLLRDNORM;
+extern const int16_t POLLWRBAND;
+extern const int16_t POLLWRNORM;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/posix.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_POSIX_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long POSIX_FADV_DONTNEED;
+extern const long POSIX_FADV_NOREUSE;
+extern const long POSIX_FADV_NORMAL;
+extern const long POSIX_FADV_RANDOM;
+extern const long POSIX_FADV_SEQUENTIAL;
+extern const long POSIX_FADV_WILLNEED;
+extern const long POSIX_MADV_DONTNEED;
+extern const long POSIX_MADV_NORMAL;
+extern const long POSIX_MADV_RANDOM;
+extern const long POSIX_MADV_SEQUENTIAL;
+extern const long POSIX_MADV_WILLNEED;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define POSIX_FADV_DONTNEED   SYMBOLIC(POSIX_FADV_DONTNEED)
+#define POSIX_FADV_NOREUSE    SYMBOLIC(POSIX_FADV_NOREUSE)
+#define POSIX_FADV_NORMAL     SYMBOLIC(POSIX_FADV_NORMAL)
+#define POSIX_FADV_RANDOM     SYMBOLIC(POSIX_FADV_RANDOM)
+#define POSIX_FADV_SEQUENTIAL SYMBOLIC(POSIX_FADV_SEQUENTIAL)
+#define POSIX_FADV_WILLNEED   SYMBOLIC(POSIX_FADV_WILLNEED)
+#define POSIX_MADV_DONTNEED   SYMBOLIC(POSIX_MADV_DONTNEED)
+#define POSIX_MADV_NORMAL     SYMBOLIC(POSIX_MADV_NORMAL)
+#define POSIX_MADV_RANDOM     SYMBOLIC(POSIX_MADV_RANDOM)
+#define POSIX_MADV_SEQUENTIAL SYMBOLIC(POSIX_MADV_SEQUENTIAL)
+#define POSIX_MADV_WILLNEED   SYMBOLIC(POSIX_MADV_WILLNEED)
+
+
+
+/*!BEGIN libc/sysv/consts/pr.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PR_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long PR_CAPBSET_DROP;
+extern const long PR_CAPBSET_READ;
+extern const long PR_CAP_AMBIENT;
+extern const long PR_CAP_AMBIENT_CLEAR_ALL;
+extern const long PR_CAP_AMBIENT_IS_SET;
+extern const long PR_CAP_AMBIENT_LOWER;
+extern const long PR_CAP_AMBIENT_RAISE;
+extern const long PR_ENDIAN_BIG;
+extern const long PR_ENDIAN_LITTLE;
+extern const long PR_ENDIAN_PPC_LITTLE;
+extern const long PR_FPEMU_NOPRINT;
+extern const long PR_FPEMU_SIGFPE;
+extern const long PR_FP_EXC_ASYNC;
+extern const long PR_FP_EXC_DISABLED;
+extern const long PR_FP_EXC_DIV;
+extern const long PR_FP_EXC_INV;
+extern const long PR_FP_EXC_NONRECOV;
+extern const long PR_FP_EXC_OVF;
+extern const long PR_FP_EXC_PRECISE;
+extern const long PR_FP_EXC_RES;
+extern const long PR_FP_EXC_SW_ENABLE;
+extern const long PR_FP_EXC_UND;
+extern const long PR_FP_MODE_FR;
+extern const long PR_FP_MODE_FRE;
+extern const long PR_GET_CHILD_SUBREAPER;
+extern const long PR_GET_DUMPABLE;
+extern const long PR_GET_ENDIAN;
+extern const long PR_GET_FPEMU;
+extern const long PR_GET_FPEXC;
+extern const long PR_GET_FP_MODE;
+extern const long PR_GET_KEEPCAPS;
+extern const long PR_GET_NAME;
+extern const long PR_GET_NO_NEW_PRIVS;
+extern const long PR_GET_PDEATHSIG;
+extern const long PR_GET_SECCOMP;
+extern const long PR_GET_SECUREBITS;
+extern const long PR_GET_SPECULATION_CTRL;
+extern const long PR_GET_THP_DISABLE;
+extern const long PR_GET_TID_ADDRESS;
+extern const long PR_GET_TIMERSLACK;
+extern const long PR_GET_TIMING;
+extern const long PR_GET_TSC;
+extern const long PR_GET_UNALIGN;
+extern const long PR_MCE_KILL;
+extern const long PR_MCE_KILL_CLEAR;
+extern const long PR_MCE_KILL_DEFAULT;
+extern const long PR_MCE_KILL_EARLY;
+extern const long PR_MCE_KILL_GET;
+extern const long PR_MCE_KILL_LATE;
+extern const long PR_MCE_KILL_SET;
+extern const long PR_MPX_DISABLE_MANAGEMENT;
+extern const long PR_MPX_ENABLE_MANAGEMENT;
+extern const long PR_SET_CHILD_SUBREAPER;
+extern const long PR_SET_DUMPABLE;
+extern const long PR_SET_ENDIAN;
+extern const long PR_SET_FPEMU;
+extern const long PR_SET_FPEXC;
+extern const long PR_SET_FP_MODE;
+extern const long PR_SET_KEEPCAPS;
+extern const long PR_SET_MM;
+extern const long PR_SET_MM_ARG_END;
+extern const long PR_SET_MM_ARG_START;
+extern const long PR_SET_MM_AUXV;
+extern const long PR_SET_MM_BRK;
+extern const long PR_SET_MM_END_CODE;
+extern const long PR_SET_MM_END_DATA;
+extern const long PR_SET_MM_ENV_END;
+extern const long PR_SET_MM_ENV_START;
+extern const long PR_SET_MM_EXE_FILE;
+extern const long PR_SET_MM_MAP;
+extern const long PR_SET_MM_MAP_SIZE;
+extern const long PR_SET_MM_START_BRK;
+extern const long PR_SET_MM_START_CODE;
+extern const long PR_SET_MM_START_DATA;
+extern const long PR_SET_MM_START_STACK;
+extern const long PR_SET_NAME;
+extern const long PR_SET_NO_NEW_PRIVS;
+extern const long PR_SET_PDEATHSIG;
+extern const long PR_SET_PTRACER;
+extern const long PR_SET_PTRACER_ANY;
+extern const long PR_SET_SECCOMP;
+extern const long PR_SET_SECUREBITS;
+extern const long PR_SET_SPECULATION_CTRL;
+extern const long PR_SET_THP_DISABLE;
+extern const long PR_SET_TIMERSLACK;
+extern const long PR_SET_TIMING;
+extern const long PR_SET_TSC;
+extern const long PR_SET_UNALIGN;
+extern const long PR_SPEC_DISABLE;
+extern const long PR_SPEC_ENABLE;
+extern const long PR_SPEC_FORCE_DISABLE;
+extern const long PR_SPEC_NOT_AFFECTED;
+extern const long PR_SPEC_PRCTL;
+extern const long PR_SPEC_STORE_BYPASS;
+extern const long PR_TASK_PERF_EVENTS_DISABLE;
+extern const long PR_TASK_PERF_EVENTS_ENABLE;
+extern const long PR_TIMING_STATISTICAL;
+extern const long PR_TIMING_TIMESTAMP;
+extern const long PR_TSC_ENABLE;
+extern const long PR_TSC_SIGSEGV;
+extern const long PR_UNALIGN_NOPRINT;
+extern const long PR_UNALIGN_SIGBUS;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define PR_CAPBSET_DROP             SYMBOLIC(PR_CAPBSET_DROP)
+#define PR_CAPBSET_READ             SYMBOLIC(PR_CAPBSET_READ)
+#define PR_CAP_AMBIENT              SYMBOLIC(PR_CAP_AMBIENT)
+#define PR_CAP_AMBIENT_CLEAR_ALL    SYMBOLIC(PR_CAP_AMBIENT_CLEAR_ALL)
+#define PR_CAP_AMBIENT_IS_SET       SYMBOLIC(PR_CAP_AMBIENT_IS_SET)
+#define PR_CAP_AMBIENT_LOWER        SYMBOLIC(PR_CAP_AMBIENT_LOWER)
+#define PR_CAP_AMBIENT_RAISE        SYMBOLIC(PR_CAP_AMBIENT_RAISE)
+#define PR_ENDIAN_BIG               SYMBOLIC(PR_ENDIAN_BIG)
+#define PR_ENDIAN_LITTLE            SYMBOLIC(PR_ENDIAN_LITTLE)
+#define PR_ENDIAN_PPC_LITTLE        SYMBOLIC(PR_ENDIAN_PPC_LITTLE)
+#define PR_FPEMU_NOPRINT            SYMBOLIC(PR_FPEMU_NOPRINT)
+#define PR_FPEMU_SIGFPE             SYMBOLIC(PR_FPEMU_SIGFPE)
+#define PR_FP_EXC_ASYNC             SYMBOLIC(PR_FP_EXC_ASYNC)
+#define PR_FP_EXC_DISABLED          SYMBOLIC(PR_FP_EXC_DISABLED)
+#define PR_FP_EXC_DIV               SYMBOLIC(PR_FP_EXC_DIV)
+#define PR_FP_EXC_INV               SYMBOLIC(PR_FP_EXC_INV)
+#define PR_FP_EXC_NONRECOV          SYMBOLIC(PR_FP_EXC_NONRECOV)
+#define PR_FP_EXC_OVF               SYMBOLIC(PR_FP_EXC_OVF)
+#define PR_FP_EXC_PRECISE           SYMBOLIC(PR_FP_EXC_PRECISE)
+#define PR_FP_EXC_RES               SYMBOLIC(PR_FP_EXC_RES)
+#define PR_FP_EXC_SW_ENABLE         SYMBOLIC(PR_FP_EXC_SW_ENABLE)
+#define PR_FP_EXC_UND               SYMBOLIC(PR_FP_EXC_UND)
+#define PR_FP_MODE_FR               SYMBOLIC(PR_FP_MODE_FR)
+#define PR_FP_MODE_FRE              SYMBOLIC(PR_FP_MODE_FRE)
+#define PR_GET_CHILD_SUBREAPER      SYMBOLIC(PR_GET_CHILD_SUBREAPER)
+#define PR_GET_DUMPABLE             SYMBOLIC(PR_GET_DUMPABLE)
+#define PR_GET_ENDIAN               SYMBOLIC(PR_GET_ENDIAN)
+#define PR_GET_FPEMU                SYMBOLIC(PR_GET_FPEMU)
+#define PR_GET_FPEXC                SYMBOLIC(PR_GET_FPEXC)
+#define PR_GET_FP_MODE              SYMBOLIC(PR_GET_FP_MODE)
+#define PR_GET_KEEPCAPS             SYMBOLIC(PR_GET_KEEPCAPS)
+#define PR_GET_NAME                 SYMBOLIC(PR_GET_NAME)
+#define PR_GET_NO_NEW_PRIVS         SYMBOLIC(PR_GET_NO_NEW_PRIVS)
+#define PR_GET_PDEATHSIG            SYMBOLIC(PR_GET_PDEATHSIG)
+#define PR_GET_SECCOMP              SYMBOLIC(PR_GET_SECCOMP)
+#define PR_GET_SECUREBITS           SYMBOLIC(PR_GET_SECUREBITS)
+#define PR_GET_SPECULATION_CTRL     SYMBOLIC(PR_GET_SPECULATION_CTRL)
+#define PR_GET_THP_DISABLE          SYMBOLIC(PR_GET_THP_DISABLE)
+#define PR_GET_TID_ADDRESS          SYMBOLIC(PR_GET_TID_ADDRESS)
+#define PR_GET_TIMERSLACK           SYMBOLIC(PR_GET_TIMERSLACK)
+#define PR_GET_TIMING               SYMBOLIC(PR_GET_TIMING)
+#define PR_GET_TSC                  SYMBOLIC(PR_GET_TSC)
+#define PR_GET_UNALIGN              SYMBOLIC(PR_GET_UNALIGN)
+#define PR_MCE_KILL                 SYMBOLIC(PR_MCE_KILL)
+#define PR_MCE_KILL_CLEAR           SYMBOLIC(PR_MCE_KILL_CLEAR)
+#define PR_MCE_KILL_DEFAULT         SYMBOLIC(PR_MCE_KILL_DEFAULT)
+#define PR_MCE_KILL_EARLY           SYMBOLIC(PR_MCE_KILL_EARLY)
+#define PR_MCE_KILL_GET             SYMBOLIC(PR_MCE_KILL_GET)
+#define PR_MCE_KILL_LATE            SYMBOLIC(PR_MCE_KILL_LATE)
+#define PR_MCE_KILL_SET             SYMBOLIC(PR_MCE_KILL_SET)
+#define PR_MPX_DISABLE_MANAGEMENT   SYMBOLIC(PR_MPX_DISABLE_MANAGEMENT)
+#define PR_MPX_ENABLE_MANAGEMENT    SYMBOLIC(PR_MPX_ENABLE_MANAGEMENT)
+#define PR_SET_CHILD_SUBREAPER      SYMBOLIC(PR_SET_CHILD_SUBREAPER)
+#define PR_SET_DUMPABLE             SYMBOLIC(PR_SET_DUMPABLE)
+#define PR_SET_ENDIAN               SYMBOLIC(PR_SET_ENDIAN)
+#define PR_SET_FPEMU                SYMBOLIC(PR_SET_FPEMU)
+#define PR_SET_FPEXC                SYMBOLIC(PR_SET_FPEXC)
+#define PR_SET_FP_MODE              SYMBOLIC(PR_SET_FP_MODE)
+#define PR_SET_KEEPCAPS             SYMBOLIC(PR_SET_KEEPCAPS)
+#define PR_SET_MM                   SYMBOLIC(PR_SET_MM)
+#define PR_SET_MM_ARG_END           SYMBOLIC(PR_SET_MM_ARG_END)
+#define PR_SET_MM_ARG_START         SYMBOLIC(PR_SET_MM_ARG_START)
+#define PR_SET_MM_AUXV              SYMBOLIC(PR_SET_MM_AUXV)
+#define PR_SET_MM_BRK               SYMBOLIC(PR_SET_MM_BRK)
+#define PR_SET_MM_END_CODE          SYMBOLIC(PR_SET_MM_END_CODE)
+#define PR_SET_MM_END_DATA          SYMBOLIC(PR_SET_MM_END_DATA)
+#define PR_SET_MM_ENV_END           SYMBOLIC(PR_SET_MM_ENV_END)
+#define PR_SET_MM_ENV_START         SYMBOLIC(PR_SET_MM_ENV_START)
+#define PR_SET_MM_EXE_FILE          SYMBOLIC(PR_SET_MM_EXE_FILE)
+#define PR_SET_MM_MAP               SYMBOLIC(PR_SET_MM_MAP)
+#define PR_SET_MM_MAP_SIZE          SYMBOLIC(PR_SET_MM_MAP_SIZE)
+#define PR_SET_MM_START_BRK         SYMBOLIC(PR_SET_MM_START_BRK)
+#define PR_SET_MM_START_CODE        SYMBOLIC(PR_SET_MM_START_CODE)
+#define PR_SET_MM_START_DATA        SYMBOLIC(PR_SET_MM_START_DATA)
+#define PR_SET_MM_START_STACK       SYMBOLIC(PR_SET_MM_START_STACK)
+#define PR_SET_NAME                 SYMBOLIC(PR_SET_NAME)
+#define PR_SET_NO_NEW_PRIVS         SYMBOLIC(PR_SET_NO_NEW_PRIVS)
+#define PR_SET_PDEATHSIG            SYMBOLIC(PR_SET_PDEATHSIG)
+#define PR_SET_PTRACER              SYMBOLIC(PR_SET_PTRACER)
+#define PR_SET_PTRACER_ANY          SYMBOLIC(PR_SET_PTRACER_ANY)
+#define PR_SET_SECCOMP              SYMBOLIC(PR_SET_SECCOMP)
+#define PR_SET_SECUREBITS           SYMBOLIC(PR_SET_SECUREBITS)
+#define PR_SET_SPECULATION_CTRL     SYMBOLIC(PR_SET_SPECULATION_CTRL)
+#define PR_SET_THP_DISABLE          SYMBOLIC(PR_SET_THP_DISABLE)
+#define PR_SET_TIMERSLACK           SYMBOLIC(PR_SET_TIMERSLACK)
+#define PR_SET_TIMING               SYMBOLIC(PR_SET_TIMING)
+#define PR_SET_TSC                  SYMBOLIC(PR_SET_TSC)
+#define PR_SET_UNALIGN              SYMBOLIC(PR_SET_UNALIGN)
+#define PR_SPEC_DISABLE             SYMBOLIC(PR_SPEC_DISABLE)
+#define PR_SPEC_ENABLE              SYMBOLIC(PR_SPEC_ENABLE)
+#define PR_SPEC_FORCE_DISABLE       SYMBOLIC(PR_SPEC_FORCE_DISABLE)
+#define PR_SPEC_NOT_AFFECTED        SYMBOLIC(PR_SPEC_NOT_AFFECTED)
+#define PR_SPEC_PRCTL               SYMBOLIC(PR_SPEC_PRCTL)
+#define PR_SPEC_STORE_BYPASS        SYMBOLIC(PR_SPEC_STORE_BYPASS)
+#define PR_TASK_PERF_EVENTS_DISABLE SYMBOLIC(PR_TASK_PERF_EVENTS_DISABLE)
+#define PR_TASK_PERF_EVENTS_ENABLE  SYMBOLIC(PR_TASK_PERF_EVENTS_ENABLE)
+#define PR_TIMING_STATISTICAL       SYMBOLIC(PR_TIMING_STATISTICAL)
+#define PR_TIMING_TIMESTAMP         SYMBOLIC(PR_TIMING_TIMESTAMP)
+#define PR_TSC_ENABLE               SYMBOLIC(PR_TSC_ENABLE)
+#define PR_TSC_SIGSEGV              SYMBOLIC(PR_TSC_SIGSEGV)
+#define PR_UNALIGN_NOPRINT          SYMBOLIC(PR_UNALIGN_NOPRINT)
+#define PR_UNALIGN_SIGBUS           SYMBOLIC(PR_UNALIGN_SIGBUS)
+
+
+
+/*!BEGIN libc/sysv/consts/prio.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PRIO_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long PRIO_MAX;
+extern const long PRIO_MIN;
+extern const long PRIO_PGRP;
+extern const long PRIO_PROCESS;
+extern const long PRIO_USER;
+extern const long NZERO;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define PRIO_PROCESS LITERALLY(0)
+#define PRIO_PGRP    LITERALLY(1)
+#define PRIO_USER    LITERALLY(2)
+#define PRIO_MIN     LITERALLY(-20)
+#define PRIO_MAX     LITERALLY(20)
+#define NZERO        LITERALLY(20)
+
+
+
+/*!BEGIN libc/sysv/consts/prot.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PROT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long PROT_NONE;
+extern const long PROT_READ;
+extern const long PROT_WRITE;
+extern const long PROT_EXEC;
+extern const long PROT_GROWSDOWN;
+extern const long PROT_GROWSUP;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define PROT_NONE 0
+#define PROT_READ 1
+#define PROT_WRITE 2
+#define PROT_EXEC 4
+#define PROT_GROWSDOWN SYMBOLIC(PROT_GROWSDOWN)
+#define PROT_GROWSUP SYMBOLIC(PROT_GROWSUP)
+
+
+
+/*!BEGIN libc/sysv/consts/pt.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PT_H_
+
+
+/*!BEGIN libc/sysv/consts/ptrace.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PTRACE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long PTRACE_TRACEME;
+extern const long PTRACE_PEEKTEXT;
+extern const long PTRACE_PEEKDATA;
+extern const long PTRACE_PEEKUSER;
+extern const long PTRACE_POKETEXT;
+extern const long PTRACE_POKEDATA;
+extern const long PTRACE_POKEUSER;
+extern const long PTRACE_CONT;
+extern const long PTRACE_KILL;
+extern const long PTRACE_SINGLESTEP;
+extern const long PTRACE_GETREGS;
+extern const long PTRACE_SETREGS;
+extern const long PTRACE_GETFPREGS;
+extern const long PTRACE_SETFPREGS;
+extern const long PTRACE_ATTACH;
+extern const long PTRACE_DETACH;
+extern const long PTRACE_GETFPXREGS;
+extern const long PTRACE_SETFPXREGS;
+extern const long PTRACE_SYSCALL;
+extern const long PTRACE_GETEVENTMSG;
+extern const long PTRACE_GETSIGINFO;
+extern const long PTRACE_SETOPTIONS;
+extern const long PTRACE_SETSIGINFO;
+extern const long PTRACE_GETREGSET;
+extern const long PTRACE_GETSIGMASK;
+extern const long PTRACE_INTERRUPT;
+extern const long PTRACE_LISTEN;
+extern const long PTRACE_PEEKSIGINFO;
+extern const long PTRACE_SECCOMP_GET_FILTER;
+extern const long PTRACE_SEIZE;
+extern const long PTRACE_SETREGSET;
+extern const long PTRACE_SETSIGMASK;
+extern const long PTRACE_O_TRACESYSGOOD;
+extern const long PTRACE_O_TRACEFORK;
+extern const long PTRACE_O_TRACEVFORK;
+extern const long PTRACE_O_TRACECLONE;
+extern const long PTRACE_O_TRACEEXEC;
+extern const long PTRACE_O_TRACEVFORKDONE;
+extern const long PTRACE_O_TRACEEXIT;
+extern const long PTRACE_O_MASK;
+extern const long PTRACE_EVENT_FORK;
+extern const long PTRACE_EVENT_VFORK;
+extern const long PTRACE_EVENT_CLONE;
+extern const long PTRACE_EVENT_EXEC;
+extern const long PTRACE_EVENT_VFORK_DONE;
+extern const long PTRACE_EVENT_EXIT;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define PTRACE_TRACEME            SYMBOLIC(PTRACE_TRACEME)
+#define PTRACE_PEEKTEXT           SYMBOLIC(PTRACE_PEEKTEXT)
+#define PTRACE_PEEKDATA           SYMBOLIC(PTRACE_PEEKDATA)
+#define PTRACE_PEEKUSER           SYMBOLIC(PTRACE_PEEKUSER)
+#define PTRACE_POKETEXT           SYMBOLIC(PTRACE_POKETEXT)
+#define PTRACE_POKEDATA           SYMBOLIC(PTRACE_POKEDATA)
+#define PTRACE_POKEUSER           SYMBOLIC(PTRACE_POKEUSER)
+#define PTRACE_CONT               SYMBOLIC(PTRACE_CONT)
+#define PTRACE_KILL               SYMBOLIC(PTRACE_KILL)
+#define PTRACE_SINGLESTEP         SYMBOLIC(PTRACE_SINGLESTEP)
+#define PTRACE_GETREGS            SYMBOLIC(PTRACE_GETREGS)
+#define PTRACE_SETREGS            SYMBOLIC(PTRACE_SETREGS)
+#define PTRACE_GETFPREGS          SYMBOLIC(PTRACE_GETFPREGS)
+#define PTRACE_SETFPREGS          SYMBOLIC(PTRACE_SETFPREGS)
+#define PTRACE_ATTACH             SYMBOLIC(PTRACE_ATTACH)
+#define PTRACE_DETACH             SYMBOLIC(PTRACE_DETACH)
+#define PTRACE_GETFPXREGS         SYMBOLIC(PTRACE_GETFPXREGS)
+#define PTRACE_SETFPXREGS         SYMBOLIC(PTRACE_SETFPXREGS)
+#define PTRACE_SYSCALL            SYMBOLIC(PTRACE_SYSCALL)
+#define PTRACE_GETEVENTMSG        SYMBOLIC(PTRACE_GETEVENTMSG)
+#define PTRACE_GETSIGINFO         SYMBOLIC(PTRACE_GETSIGINFO)
+#define PTRACE_SETOPTIONS         SYMBOLIC(PTRACE_SETOPTIONS)
+#define PTRACE_SETSIGINFO         SYMBOLIC(PTRACE_SETSIGINFO)
+#define PTRACE_GETREGSET          SYMBOLIC(PTRACE_GETREGSET)
+#define PTRACE_GETSIGMASK         SYMBOLIC(PTRACE_GETSIGMASK)
+#define PTRACE_INTERRUPT          SYMBOLIC(PTRACE_INTERRUPT)
+#define PTRACE_LISTEN             SYMBOLIC(PTRACE_LISTEN)
+#define PTRACE_PEEKSIGINFO        SYMBOLIC(PTRACE_PEEKSIGINFO)
+#define PTRACE_SECCOMP_GET_FILTER SYMBOLIC(PTRACE_SECCOMP_GET_FILTER)
+#define PTRACE_SEIZE              SYMBOLIC(PTRACE_SEIZE)
+#define PTRACE_SETREGSET          SYMBOLIC(PTRACE_SETREGSET)
+#define PTRACE_SETSIGMASK         SYMBOLIC(PTRACE_SETSIGMASK)
+#define PTRACE_O_TRACESYSGOOD     SYMBOLIC(PTRACE_O_TRACESYSGOOD)
+#define PTRACE_O_TRACEFORK        SYMBOLIC(PTRACE_O_TRACEFORK)
+#define PTRACE_O_TRACEVFORK       SYMBOLIC(PTRACE_O_TRACEVFORK)
+#define PTRACE_O_TRACECLONE       SYMBOLIC(PTRACE_O_TRACECLONE)
+#define PTRACE_O_TRACEEXEC        SYMBOLIC(PTRACE_O_TRACEEXEC)
+#define PTRACE_O_TRACEVFORKDONE   SYMBOLIC(PTRACE_O_TRACEVFORKDONE)
+#define PTRACE_O_TRACEEXIT        SYMBOLIC(PTRACE_O_TRACEEXIT)
+#define PTRACE_O_MASK             SYMBOLIC(PTRACE_O_MASK)
+#define PTRACE_EVENT_FORK         SYMBOLIC(PTRACE_EVENT_FORK)
+#define PTRACE_EVENT_VFORK        SYMBOLIC(PTRACE_EVENT_VFORK)
+#define PTRACE_EVENT_CLONE        SYMBOLIC(PTRACE_EVENT_CLONE)
+#define PTRACE_EVENT_EXEC         SYMBOLIC(PTRACE_EVENT_EXEC)
+#define PTRACE_EVENT_VFORK_DONE   SYMBOLIC(PTRACE_EVENT_VFORK_DONE)
+#define PTRACE_EVENT_EXIT         SYMBOLIC(PTRACE_EVENT_EXIT)
+
+
+#define PT_ATTACH      PTRACE_ATTACH
+#define PT_CONTINUE    PTRACE_CONT
+#define PT_DETACH      PTRACE_DETACH
+#define PT_GETEVENTMSG PTRACE_GETEVENTMSG
+#define PT_GETFPREGS   PTRACE_GETFPREGS
+#define PT_GETFPXREGS  PTRACE_GETFPXREGS
+#define PT_GETREGS     PTRACE_GETREGS
+#define PT_GETSIGINFO  PTRACE_GETSIGINFO
+#define PT_KILL        PTRACE_KILL
+#define PT_READ_D      PTRACE_PEEKDATA
+#define PT_READ_I      PTRACE_PEEKTEXT
+#define PT_READ_U      PTRACE_PEEKUSER
+#define PT_SETFPREGS   PTRACE_SETFPREGS
+#define PT_SETFPXREGS  PTRACE_SETFPXREGS
+#define PT_SETOPTIONS  PTRACE_SETOPTIONS
+#define PT_SETREGS     PTRACE_SETREGS
+#define PT_SETSIGINFO  PTRACE_SETSIGINFO
+#define PT_STEP        PTRACE_SINGLESTEP
+#define PT_SYSCALL     PTRACE_SYSCALL
+#define PT_WRITE_D     PTRACE_POKEDATA
+#define PT_WRITE_I     PTRACE_POKETEXT
+#define PT_WRITE_U     PTRACE_POKEUSER
+
+
+
+/*!BEGIN libc/sysv/consts/pty.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PTY_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long TIOCPKT;
+extern const long TIOCPKT_DATA;
+extern const long TIOCPKT_DOSTOP;
+extern const long TIOCPKT_FLUSHREAD;
+extern const long TIOCPKT_FLUSHWRITE;
+extern const long TIOCPKT_IOCTL;
+extern const long TIOCPKT_NOSTOP;
+extern const long TIOCPKT_START;
+extern const long TIOCPKT_STOP;
+extern const long TIOCSPTLCK;
+extern const long PTMGET;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define TIOCPKT            SYMBOLIC(TIOCPKT)
+#define TIOCSPTLCK         SYMBOLIC(TIOCSPTLCK)
+#define PTMGET             SYMBOLIC(PTMGET)
+#define TIOCPKT_DATA       LITERALLY(0x00)
+#define TIOCPKT_DOSTOP     LITERALLY(0x01)
+#define TIOCPKT_FLUSHREAD  LITERALLY(0x02)
+#define TIOCPKT_FLUSHWRITE LITERALLY(0x04)
+#define TIOCPKT_IOCTL      LITERALLY(0x08)
+#define TIOCPKT_NOSTOP     LITERALLY(0x10)
+#define TIOCPKT_START      LITERALLY(0x20)
+#define TIOCPKT_STOP       LITERALLY(0x40)
+
+
+
+/*!BEGIN libc/sysv/consts/read.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_READ_H_
+
+#define READ_10 SYMBOLIC(READ_10)
+#define READ_12 SYMBOLIC(READ_12)
+#define READ_6 SYMBOLIC(READ_6)
+#define READ_BLOCK_LIMITS SYMBOLIC(READ_BLOCK_LIMITS)
+#define READ_BUFFER SYMBOLIC(READ_BUFFER)
+#define READ_CAPACITY SYMBOLIC(READ_CAPACITY)
+#define READ_DEFECT_DATA SYMBOLIC(READ_DEFECT_DATA)
+#define READ_ELEMENT_STATUS SYMBOLIC(READ_ELEMENT_STATUS)
+#define READ_LONG SYMBOLIC(READ_LONG)
+#define READ_POSITION SYMBOLIC(READ_POSITION)
+#define READ_REVERSE SYMBOLIC(READ_REVERSE)
+#define READ_TOC SYMBOLIC(READ_TOC)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long READ_10;
+extern const long READ_12;
+extern const long READ_6;
+extern const long READ_BLOCK_LIMITS;
+extern const long READ_BUFFER;
+extern const long READ_CAPACITY;
+extern const long READ_DEFECT_DATA;
+extern const long READ_ELEMENT_STATUS;
+extern const long READ_LONG;
+extern const long READ_POSITION;
+extern const long READ_REVERSE;
+extern const long READ_TOC;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/rlim.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_RLIM_H_
+
+#define RLIM_INFINITY SYMBOLIC(RLIM_INFINITY)
+#define RLIM_NLIMITS SYMBOLIC(RLIM_NLIMITS)
+#define RLIM_SAVED_CUR SYMBOLIC(RLIM_SAVED_CUR)
+#define RLIM_SAVED_MAX SYMBOLIC(RLIM_SAVED_MAX)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long RLIM_INFINITY;
+extern const long RLIM_NLIMITS;
+extern const long RLIM_SAVED_CUR;
+extern const long RLIM_SAVED_MAX;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/rlimit.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_RLIMIT_H_
+
+#define RLIMIT_AS SYMBOLIC(RLIMIT_AS)
+#define RLIMIT_CORE SYMBOLIC(RLIMIT_CORE)
+#define RLIMIT_CPU SYMBOLIC(RLIMIT_CPU)
+#define RLIMIT_DATA SYMBOLIC(RLIMIT_DATA)
+#define RLIMIT_FSIZE SYMBOLIC(RLIMIT_FSIZE)
+#define RLIMIT_LOCKS SYMBOLIC(RLIMIT_LOCKS)
+#define RLIMIT_MEMLOCK SYMBOLIC(RLIMIT_MEMLOCK)
+#define RLIMIT_MSGQUEUE SYMBOLIC(RLIMIT_MSGQUEUE)
+#define RLIMIT_NICE SYMBOLIC(RLIMIT_NICE)
+#define RLIMIT_NLIMITS SYMBOLIC(RLIMIT_NLIMITS)
+#define RLIMIT_NOFILE SYMBOLIC(RLIMIT_NOFILE)
+#define RLIMIT_NPROC SYMBOLIC(RLIMIT_NPROC)
+#define RLIMIT_RSS SYMBOLIC(RLIMIT_RSS)
+#define RLIMIT_RTPRIO SYMBOLIC(RLIMIT_RTPRIO)
+#define RLIMIT_SIGPENDING SYMBOLIC(RLIMIT_SIGPENDING)
+#define RLIMIT_STACK SYMBOLIC(RLIMIT_STACK)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long RLIMIT_AS;
+extern const long RLIMIT_CORE;
+extern const long RLIMIT_CPU;
+extern const long RLIMIT_DATA;
+extern const long RLIMIT_FSIZE;
+extern const long RLIMIT_LOCKS;
+extern const long RLIMIT_MEMLOCK;
+extern const long RLIMIT_MSGQUEUE;
+extern const long RLIMIT_NICE;
+extern const long RLIMIT_NLIMITS;
+extern const long RLIMIT_NOFILE;
+extern const long RLIMIT_NPROC;
+extern const long RLIMIT_RSS;
+extern const long RLIMIT_RTPRIO;
+extern const long RLIMIT_SIGPENDING;
+extern const long RLIMIT_STACK;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/rtld.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_RTLD_H_
+
+#define RTLD_DI_LINKMAP SYMBOLIC(RTLD_DI_LINKMAP)
+#define RTLD_GLOBAL SYMBOLIC(RTLD_GLOBAL)
+#define RTLD_LAZY SYMBOLIC(RTLD_LAZY)
+#define RTLD_LOCAL SYMBOLIC(RTLD_LOCAL)
+#define RTLD_NODELETE SYMBOLIC(RTLD_NODELETE)
+#define RTLD_NOLOAD SYMBOLIC(RTLD_NOLOAD)
+#define RTLD_NOW SYMBOLIC(RTLD_NOW)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long RTLD_DI_LINKMAP;
+extern const long RTLD_GLOBAL;
+extern const long RTLD_LAZY;
+extern const long RTLD_LOCAL;
+extern const long RTLD_NODELETE;
+extern const long RTLD_NOLOAD;
+extern const long RTLD_NOW;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/rusage.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_RUSAGE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long RUSAGE_CHILDREN;
+extern const long RUSAGE_SELF;
+extern const long RUSAGE_THREAD;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define RUSAGE_SELF LITERALLY(0)
+#define RUSAGE_CHILDREN SYMBOLIC(RUSAGE_CHILDREN)
+#define RUSAGE_THREAD SYMBOLIC(RUSAGE_THREAD)
+
+
+
+/*!BEGIN libc/sysv/consts/sa.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SA_H_
+
+#define SA_NOCLDSTOP SYMBOLIC(SA_NOCLDSTOP)
+#define SA_NOCLDWAIT SYMBOLIC(SA_NOCLDWAIT)
+#define SA_NODEFER SYMBOLIC(SA_NODEFER)
+#define SA_NOMASK SYMBOLIC(SA_NOMASK)
+#define SA_ONESHOT SYMBOLIC(SA_ONESHOT)
+#define SA_ONSTACK SYMBOLIC(SA_ONSTACK)
+#define SA_RESETHAND SYMBOLIC(SA_RESETHAND)
+#define SA_RESTART SYMBOLIC(SA_RESTART)
+#define SA_RESTORER SYMBOLIC(SA_RESTORER)
+#define SA_SIGINFO SYMBOLIC(SA_SIGINFO)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long SA_NOCLDSTOP;
+extern const long SA_NOCLDWAIT;
+extern const long SA_NODEFER;
+extern const long SA_NOMASK;
+extern const long SA_ONESHOT;
+extern const long SA_ONSTACK;
+extern const long SA_RESETHAND;
+extern const long SA_RESTART;
+extern const long SA_RESTORER;
+extern const long SA_SIGINFO;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/sched.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SCHED_H_
+
+#define SCHED_BATCH SYMBOLIC(SCHED_BATCH)
+#define SCHED_FIFO SYMBOLIC(SCHED_FIFO)
+#define SCHED_IDLE SYMBOLIC(SCHED_IDLE)
+#define SCHED_OTHER SYMBOLIC(SCHED_OTHER)
+#define SCHED_RESET_ON_FORK SYMBOLIC(SCHED_RESET_ON_FORK)
+#define SCHED_RR SYMBOLIC(SCHED_RR)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long SCHED_BATCH;
+extern const long SCHED_FIFO;
+extern const long SCHED_IDLE;
+extern const long SCHED_OTHER;
+extern const long SCHED_RESET_ON_FORK;
+extern const long SCHED_RR;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/scsi.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SCSI_H_
+
+#define SCSI_IOCTL_BENCHMARK_COMMAND SYMBOLIC(SCSI_IOCTL_BENCHMARK_COMMAND)
+#define SCSI_IOCTL_DOORLOCK SYMBOLIC(SCSI_IOCTL_DOORLOCK)
+#define SCSI_IOCTL_DOORUNLOCK SYMBOLIC(SCSI_IOCTL_DOORUNLOCK)
+#define SCSI_IOCTL_GET_BUS_NUMBER SYMBOLIC(SCSI_IOCTL_GET_BUS_NUMBER)
+#define SCSI_IOCTL_GET_IDLUN SYMBOLIC(SCSI_IOCTL_GET_IDLUN)
+#define SCSI_IOCTL_PROBE_HOST SYMBOLIC(SCSI_IOCTL_PROBE_HOST)
+#define SCSI_IOCTL_SEND_COMMAND SYMBOLIC(SCSI_IOCTL_SEND_COMMAND)
+#define SCSI_IOCTL_START_UNIT SYMBOLIC(SCSI_IOCTL_START_UNIT)
+#define SCSI_IOCTL_STOP_UNIT SYMBOLIC(SCSI_IOCTL_STOP_UNIT)
+#define SCSI_IOCTL_SYNC SYMBOLIC(SCSI_IOCTL_SYNC)
+#define SCSI_IOCTL_TAGGED_DISABLE SYMBOLIC(SCSI_IOCTL_TAGGED_DISABLE)
+#define SCSI_IOCTL_TAGGED_ENABLE SYMBOLIC(SCSI_IOCTL_TAGGED_ENABLE)
+#define SCSI_IOCTL_TEST_UNIT_READY SYMBOLIC(SCSI_IOCTL_TEST_UNIT_READY)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long SCSI_IOCTL_BENCHMARK_COMMAND;
+extern const long SCSI_IOCTL_DOORLOCK;
+extern const long SCSI_IOCTL_DOORUNLOCK;
+extern const long SCSI_IOCTL_GET_BUS_NUMBER;
+extern const long SCSI_IOCTL_GET_IDLUN;
+extern const long SCSI_IOCTL_PROBE_HOST;
+extern const long SCSI_IOCTL_SEND_COMMAND;
+extern const long SCSI_IOCTL_START_UNIT;
+extern const long SCSI_IOCTL_STOP_UNIT;
+extern const long SCSI_IOCTL_SYNC;
+extern const long SCSI_IOCTL_TAGGED_DISABLE;
+extern const long SCSI_IOCTL_TAGGED_ENABLE;
+extern const long SCSI_IOCTL_TEST_UNIT_READY;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/segv.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SEGV_H_
+
+#define SEGV_ACCERR SYMBOLIC(SEGV_ACCERR)
+#define SEGV_MAPERR SYMBOLIC(SEGV_MAPERR)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long SEGV_ACCERR;
+extern const long SEGV_MAPERR;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/sg.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SG_H_
+
+#define SG_BIG_BUFF SYMBOLIC(SG_BIG_BUFF)
+#define SG_DEFAULT_RETRIES SYMBOLIC(SG_DEFAULT_RETRIES)
+#define SG_DEFAULT_TIMEOUT SYMBOLIC(SG_DEFAULT_TIMEOUT)
+#define SG_DEF_COMMAND_Q SYMBOLIC(SG_DEF_COMMAND_Q)
+#define SG_DEF_FORCE_LOW_DMA SYMBOLIC(SG_DEF_FORCE_LOW_DMA)
+#define SG_DEF_FORCE_PACK_ID SYMBOLIC(SG_DEF_FORCE_PACK_ID)
+#define SG_DEF_KEEP_ORPHAN SYMBOLIC(SG_DEF_KEEP_ORPHAN)
+#define SG_DEF_RESERVED_SIZE SYMBOLIC(SG_DEF_RESERVED_SIZE)
+#define SG_DEF_UNDERRUN_FLAG SYMBOLIC(SG_DEF_UNDERRUN_FLAG)
+#define SG_DXFER_FROM_DEV SYMBOLIC(SG_DXFER_FROM_DEV)
+#define SG_DXFER_NONE SYMBOLIC(SG_DXFER_NONE)
+#define SG_DXFER_TO_DEV SYMBOLIC(SG_DXFER_TO_DEV)
+#define SG_DXFER_TO_FROM_DEV SYMBOLIC(SG_DXFER_TO_FROM_DEV)
+#define SG_EMULATED_HOST SYMBOLIC(SG_EMULATED_HOST)
+#define SG_FLAG_DIRECT_IO SYMBOLIC(SG_FLAG_DIRECT_IO)
+#define SG_FLAG_LUN_INHIBIT SYMBOLIC(SG_FLAG_LUN_INHIBIT)
+#define SG_FLAG_NO_DXFER SYMBOLIC(SG_FLAG_NO_DXFER)
+#define SG_GET_COMMAND_Q SYMBOLIC(SG_GET_COMMAND_Q)
+#define SG_GET_KEEP_ORPHAN SYMBOLIC(SG_GET_KEEP_ORPHAN)
+#define SG_GET_LOW_DMA SYMBOLIC(SG_GET_LOW_DMA)
+#define SG_GET_NUM_WAITING SYMBOLIC(SG_GET_NUM_WAITING)
+#define SG_GET_PACK_ID SYMBOLIC(SG_GET_PACK_ID)
+#define SG_GET_REQUEST_TABLE SYMBOLIC(SG_GET_REQUEST_TABLE)
+#define SG_GET_RESERVED_SIZE SYMBOLIC(SG_GET_RESERVED_SIZE)
+#define SG_GET_SCSI_ID SYMBOLIC(SG_GET_SCSI_ID)
+#define SG_GET_SG_TABLESIZE SYMBOLIC(SG_GET_SG_TABLESIZE)
+#define SG_GET_TIMEOUT SYMBOLIC(SG_GET_TIMEOUT)
+#define SG_GET_TRANSFORM SYMBOLIC(SG_GET_TRANSFORM)
+#define SG_GET_VERSION_NUM SYMBOLIC(SG_GET_VERSION_NUM)
+#define SG_INFO_CHECK SYMBOLIC(SG_INFO_CHECK)
+#define SG_INFO_DIRECT_IO SYMBOLIC(SG_INFO_DIRECT_IO)
+#define SG_INFO_DIRECT_IO_MASK SYMBOLIC(SG_INFO_DIRECT_IO_MASK)
+#define SG_INFO_INDIRECT_IO SYMBOLIC(SG_INFO_INDIRECT_IO)
+#define SG_INFO_MIXED_IO SYMBOLIC(SG_INFO_MIXED_IO)
+#define SG_INFO_OK SYMBOLIC(SG_INFO_OK)
+#define SG_INFO_OK_MASK SYMBOLIC(SG_INFO_OK_MASK)
+#define SG_IO SYMBOLIC(SG_IO)
+#define SG_MAX_QUEUE SYMBOLIC(SG_MAX_QUEUE)
+#define SG_MAX_SENSE SYMBOLIC(SG_MAX_SENSE)
+#define SG_NEXT_CMD_LEN SYMBOLIC(SG_NEXT_CMD_LEN)
+#define SG_SCATTER_SZ SYMBOLIC(SG_SCATTER_SZ)
+#define SG_SCSI_RESET SYMBOLIC(SG_SCSI_RESET)
+#define SG_SCSI_RESET_BUS SYMBOLIC(SG_SCSI_RESET_BUS)
+#define SG_SCSI_RESET_DEVICE SYMBOLIC(SG_SCSI_RESET_DEVICE)
+#define SG_SCSI_RESET_HOST SYMBOLIC(SG_SCSI_RESET_HOST)
+#define SG_SCSI_RESET_NOTHING SYMBOLIC(SG_SCSI_RESET_NOTHING)
+#define SG_SET_COMMAND_Q SYMBOLIC(SG_SET_COMMAND_Q)
+#define SG_SET_DEBUG SYMBOLIC(SG_SET_DEBUG)
+#define SG_SET_FORCE_LOW_DMA SYMBOLIC(SG_SET_FORCE_LOW_DMA)
+#define SG_SET_FORCE_PACK_ID SYMBOLIC(SG_SET_FORCE_PACK_ID)
+#define SG_SET_KEEP_ORPHAN SYMBOLIC(SG_SET_KEEP_ORPHAN)
+#define SG_SET_RESERVED_SIZE SYMBOLIC(SG_SET_RESERVED_SIZE)
+#define SG_SET_TIMEOUT SYMBOLIC(SG_SET_TIMEOUT)
+#define SG_SET_TRANSFORM SYMBOLIC(SG_SET_TRANSFORM)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long SG_BIG_BUFF;
+extern const long SG_DEFAULT_RETRIES;
+extern const long SG_DEFAULT_TIMEOUT;
+extern const long SG_DEF_COMMAND_Q;
+extern const long SG_DEF_FORCE_LOW_DMA;
+extern const long SG_DEF_FORCE_PACK_ID;
+extern const long SG_DEF_KEEP_ORPHAN;
+extern const long SG_DEF_RESERVED_SIZE;
+extern const long SG_DEF_UNDERRUN_FLAG;
+extern const long SG_DXFER_FROM_DEV;
+extern const long SG_DXFER_NONE;
+extern const long SG_DXFER_TO_DEV;
+extern const long SG_DXFER_TO_FROM_DEV;
+extern const long SG_EMULATED_HOST;
+extern const long SG_FLAG_DIRECT_IO;
+extern const long SG_FLAG_LUN_INHIBIT;
+extern const long SG_FLAG_NO_DXFER;
+extern const long SG_GET_COMMAND_Q;
+extern const long SG_GET_KEEP_ORPHAN;
+extern const long SG_GET_LOW_DMA;
+extern const long SG_GET_NUM_WAITING;
+extern const long SG_GET_PACK_ID;
+extern const long SG_GET_REQUEST_TABLE;
+extern const long SG_GET_RESERVED_SIZE;
+extern const long SG_GET_SCSI_ID;
+extern const long SG_GET_SG_TABLESIZE;
+extern const long SG_GET_TIMEOUT;
+extern const long SG_GET_TRANSFORM;
+extern const long SG_GET_VERSION_NUM;
+extern const long SG_INFO_CHECK;
+extern const long SG_INFO_DIRECT_IO;
+extern const long SG_INFO_DIRECT_IO_MASK;
+extern const long SG_INFO_INDIRECT_IO;
+extern const long SG_INFO_MIXED_IO;
+extern const long SG_INFO_OK;
+extern const long SG_INFO_OK_MASK;
+extern const long SG_IO;
+extern const long SG_MAX_QUEUE;
+extern const long SG_MAX_SENSE;
+extern const long SG_NEXT_CMD_LEN;
+extern const long SG_SCATTER_SZ;
+extern const long SG_SCSI_RESET;
+extern const long SG_SCSI_RESET_BUS;
+extern const long SG_SCSI_RESET_DEVICE;
+extern const long SG_SCSI_RESET_HOST;
+extern const long SG_SCSI_RESET_NOTHING;
+extern const long SG_SET_COMMAND_Q;
+extern const long SG_SET_DEBUG;
+extern const long SG_SET_FORCE_LOW_DMA;
+extern const long SG_SET_FORCE_PACK_ID;
+extern const long SG_SET_KEEP_ORPHAN;
+extern const long SG_SET_RESERVED_SIZE;
+extern const long SG_SET_TIMEOUT;
+extern const long SG_SET_TRANSFORM;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/shm.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SHM_H_
+
+#define SHM_DEST SYMBOLIC(SHM_DEST)
+#define SHM_EXEC SYMBOLIC(SHM_EXEC)
+#define SHM_HUGETLB SYMBOLIC(SHM_HUGETLB)
+#define SHM_INFO SYMBOLIC(SHM_INFO)
+#define SHM_LOCK SYMBOLIC(SHM_LOCK)
+#define SHM_LOCKED SYMBOLIC(SHM_LOCKED)
+#define SHM_NORESERVE SYMBOLIC(SHM_NORESERVE)
+#define SHM_R SYMBOLIC(SHM_R)
+#define SHM_RDONLY SYMBOLIC(SHM_RDONLY)
+#define SHM_REMAP SYMBOLIC(SHM_REMAP)
+#define SHM_RND SYMBOLIC(SHM_RND)
+#define SHM_STAT SYMBOLIC(SHM_STAT)
+#define SHM_UNLOCK SYMBOLIC(SHM_UNLOCK)
+#define SHM_W SYMBOLIC(SHM_W)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long SHM_DEST;
+extern const long SHM_EXEC;
+extern const long SHM_HUGETLB;
+extern const long SHM_INFO;
+extern const long SHM_LOCK;
+extern const long SHM_LOCKED;
+extern const long SHM_NORESERVE;
+extern const long SHM_R;
+extern const long SHM_RDONLY;
+extern const long SHM_REMAP;
+extern const long SHM_RND;
+extern const long SHM_STAT;
+extern const long SHM_UNLOCK;
+extern const long SHM_W;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/shut.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SHUT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long SHUT_RD;
+extern const long SHUT_RDWR;
+extern const long SHUT_WR;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define SHUT_RD LITERALLY(0)
+#define SHUT_RDWR LITERALLY(2)
+#define SHUT_WR LITERALLY(1)
+
+
+
+/*!BEGIN libc/sysv/consts/sigpoll.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_POLL_H_
+
+#define POLL_ERR SYMBOLIC(POLL_ERR)
+#define POLL_HUP SYMBOLIC(POLL_HUP)
+#define POLL_IN SYMBOLIC(POLL_IN)
+#define POLL_MSG SYMBOLIC(POLL_MSG)
+#define POLL_OUT SYMBOLIC(POLL_OUT)
+#define POLL_PRI SYMBOLIC(POLL_PRI)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long POLL_ERR;
+extern const long POLL_HUP;
+extern const long POLL_IN;
+extern const long POLL_MSG;
+extern const long POLL_OUT;
+extern const long POLL_PRI;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/sio.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SIO_H_
+
+#define SIOCADDDLCI SYMBOLIC(SIOCADDDLCI)
+#define SIOCADDMULTI SYMBOLIC(SIOCADDMULTI)
+#define SIOCADDRT SYMBOLIC(SIOCADDRT)
+#define SIOCATMARK SYMBOLIC(SIOCATMARK)
+#define SIOCDARP SYMBOLIC(SIOCDARP)
+#define SIOCDELDLCI SYMBOLIC(SIOCDELDLCI)
+#define SIOCDELMULTI SYMBOLIC(SIOCDELMULTI)
+#define SIOCDELRT SYMBOLIC(SIOCDELRT)
+#define SIOCDEVPRIVATE SYMBOLIC(SIOCDEVPRIVATE)
+#define SIOCDIFADDR SYMBOLIC(SIOCDIFADDR)
+#define SIOCDRARP SYMBOLIC(SIOCDRARP)
+#define SIOCGARP SYMBOLIC(SIOCGARP)
+#define SIOCGIFADDR SYMBOLIC(SIOCGIFADDR)
+#define SIOCGIFBR SYMBOLIC(SIOCGIFBR)
+#define SIOCGIFBRDADDR SYMBOLIC(SIOCGIFBRDADDR)
+#define SIOCGIFCONF SYMBOLIC(SIOCGIFCONF)
+#define SIOCGIFCOUNT SYMBOLIC(SIOCGIFCOUNT)
+#define SIOCGIFDSTADDR SYMBOLIC(SIOCGIFDSTADDR)
+#define SIOCGIFENCAP SYMBOLIC(SIOCGIFENCAP)
+#define SIOCGIFFLAGS SYMBOLIC(SIOCGIFFLAGS)
+#define SIOCGIFHWADDR SYMBOLIC(SIOCGIFHWADDR)
+#define SIOCGIFINDEX SYMBOLIC(SIOCGIFINDEX)
+#define SIOCGIFMAP SYMBOLIC(SIOCGIFMAP)
+#define SIOCGIFMEM SYMBOLIC(SIOCGIFMEM)
+#define SIOCGIFMETRIC SYMBOLIC(SIOCGIFMETRIC)
+#define SIOCGIFMTU SYMBOLIC(SIOCGIFMTU)
+#define SIOCGIFNAME SYMBOLIC(SIOCGIFNAME)
+#define SIOCGIFNETMASK SYMBOLIC(SIOCGIFNETMASK)
+#define SIOCGIFPFLAGS SYMBOLIC(SIOCGIFPFLAGS)
+#define SIOCGIFSLAVE SYMBOLIC(SIOCGIFSLAVE)
+#define SIOCGIFTXQLEN SYMBOLIC(SIOCGIFTXQLEN)
+#define SIOCGPGRP SYMBOLIC(SIOCGPGRP)
+#define SIOCGRARP SYMBOLIC(SIOCGRARP)
+#define SIOCGSTAMP SYMBOLIC(SIOCGSTAMP)
+#define SIOCGSTAMPNS SYMBOLIC(SIOCGSTAMPNS)
+#define SIOCPROTOPRIVATE SYMBOLIC(SIOCPROTOPRIVATE)
+#define SIOCRTMSG SYMBOLIC(SIOCRTMSG)
+#define SIOCSARP SYMBOLIC(SIOCSARP)
+#define SIOCSIFADDR SYMBOLIC(SIOCSIFADDR)
+#define SIOCSIFBR SYMBOLIC(SIOCSIFBR)
+#define SIOCSIFBRDADDR SYMBOLIC(SIOCSIFBRDADDR)
+#define SIOCSIFDSTADDR SYMBOLIC(SIOCSIFDSTADDR)
+#define SIOCSIFENCAP SYMBOLIC(SIOCSIFENCAP)
+#define SIOCSIFFLAGS SYMBOLIC(SIOCSIFFLAGS)
+#define SIOCSIFHWADDR SYMBOLIC(SIOCSIFHWADDR)
+#define SIOCSIFHWBROADCAST SYMBOLIC(SIOCSIFHWBROADCAST)
+#define SIOCSIFLINK SYMBOLIC(SIOCSIFLINK)
+#define SIOCSIFMAP SYMBOLIC(SIOCSIFMAP)
+#define SIOCSIFMEM SYMBOLIC(SIOCSIFMEM)
+#define SIOCSIFMETRIC SYMBOLIC(SIOCSIFMETRIC)
+#define SIOCSIFMTU SYMBOLIC(SIOCSIFMTU)
+#define SIOCSIFNAME SYMBOLIC(SIOCSIFNAME)
+#define SIOCSIFNETMASK SYMBOLIC(SIOCSIFNETMASK)
+#define SIOCSIFPFLAGS SYMBOLIC(SIOCSIFPFLAGS)
+#define SIOCSIFSLAVE SYMBOLIC(SIOCSIFSLAVE)
+#define SIOCSIFTXQLEN SYMBOLIC(SIOCSIFTXQLEN)
+#define SIOCSPGRP SYMBOLIC(SIOCSPGRP)
+#define SIOCSRARP SYMBOLIC(SIOCSRARP)
+#define SIOGIFINDEX SYMBOLIC(SIOGIFINDEX)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long SIOCADDDLCI;
+extern const long SIOCADDMULTI;
+extern const long SIOCADDRT;
+extern const long SIOCATMARK;
+extern const long SIOCDARP;
+extern const long SIOCDELDLCI;
+extern const long SIOCDELMULTI;
+extern const long SIOCDELRT;
+extern const long SIOCDEVPRIVATE;
+extern const long SIOCDIFADDR;
+extern const long SIOCDRARP;
+extern const long SIOCGARP;
+extern const long SIOCGIFADDR;
+extern const long SIOCGIFBR;
+extern const long SIOCGIFBRDADDR;
+extern const long SIOCGIFCONF;
+extern const long SIOCGIFCOUNT;
+extern const long SIOCGIFDSTADDR;
+extern const long SIOCGIFENCAP;
+extern const long SIOCGIFFLAGS;
+extern const long SIOCGIFHWADDR;
+extern const long SIOCGIFINDEX;
+extern const long SIOCGIFMAP;
+extern const long SIOCGIFMEM;
+extern const long SIOCGIFMETRIC;
+extern const long SIOCGIFMTU;
+extern const long SIOCGIFNAME;
+extern const long SIOCGIFNETMASK;
+extern const long SIOCGIFPFLAGS;
+extern const long SIOCGIFSLAVE;
+extern const long SIOCGIFTXQLEN;
+extern const long SIOCGPGRP;
+extern const long SIOCGRARP;
+extern const long SIOCGSTAMP;
+extern const long SIOCGSTAMPNS;
+extern const long SIOCPROTOPRIVATE;
+extern const long SIOCRTMSG;
+extern const long SIOCSARP;
+extern const long SIOCSIFADDR;
+extern const long SIOCSIFBR;
+extern const long SIOCSIFBRDADDR;
+extern const long SIOCSIFDSTADDR;
+extern const long SIOCSIFENCAP;
+extern const long SIOCSIFFLAGS;
+extern const long SIOCSIFHWADDR;
+extern const long SIOCSIFHWBROADCAST;
+extern const long SIOCSIFLINK;
+extern const long SIOCSIFMAP;
+extern const long SIOCSIFMEM;
+extern const long SIOCSIFMETRIC;
+extern const long SIOCSIFMTU;
+extern const long SIOCSIFNAME;
+extern const long SIOCSIFNETMASK;
+extern const long SIOCSIFPFLAGS;
+extern const long SIOCSIFSLAVE;
+extern const long SIOCSIFTXQLEN;
+extern const long SIOCSPGRP;
+extern const long SIOCSRARP;
+extern const long SIOGIFINDEX;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/so.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SO_H_
+
+#define SO_ACCEPTCONN SYMBOLIC(SO_ACCEPTCONN)
+#define SO_ATTACH_BPF SYMBOLIC(SO_ATTACH_BPF)
+#define SO_ATTACH_FILTER SYMBOLIC(SO_ATTACH_FILTER)
+#define SO_ATTACH_REUSEPORT_CBPF SYMBOLIC(SO_ATTACH_REUSEPORT_CBPF)
+#define SO_ATTACH_REUSEPORT_EBPF SYMBOLIC(SO_ATTACH_REUSEPORT_EBPF)
+#define SO_BINDTODEVICE SYMBOLIC(SO_BINDTODEVICE)
+#define SO_BPF_EXTENSIONS SYMBOLIC(SO_BPF_EXTENSIONS)
+#define SO_BROADCAST SYMBOLIC(SO_BROADCAST)
+#define SO_BSDCOMPAT SYMBOLIC(SO_BSDCOMPAT)
+#define SO_BUSY_POLL SYMBOLIC(SO_BUSY_POLL)
+#define SO_CNX_ADVICE SYMBOLIC(SO_CNX_ADVICE)
+#define SO_DEBUG SYMBOLIC(SO_DEBUG)
+#define SO_DETACH_BPF SYMBOLIC(SO_DETACH_BPF)
+#define SO_DETACH_FILTER SYMBOLIC(SO_DETACH_FILTER)
+#define SO_DOMAIN SYMBOLIC(SO_DOMAIN)
+#define SO_DONTROUTE SYMBOLIC(SO_DONTROUTE)
+#define SO_ERROR SYMBOLIC(SO_ERROR)
+#define SO_EXCLUSIVEADDRUSE SYMBOLIC(SO_EXCLUSIVEADDRUSE)
+#define SO_GET_FILTER SYMBOLIC(SO_GET_FILTER)
+#define SO_INCOMING_CPU SYMBOLIC(SO_INCOMING_CPU)
+#define SO_KEEPALIVE SYMBOLIC(SO_KEEPALIVE)
+#define SO_LINGER SYMBOLIC(SO_LINGER)
+#define SO_LOCK_FILTER SYMBOLIC(SO_LOCK_FILTER)
+#define SO_MARK SYMBOLIC(SO_MARK)
+#define SO_MAX_PACING_RATE SYMBOLIC(SO_MAX_PACING_RATE)
+#define SO_NOFCS SYMBOLIC(SO_NOFCS)
+#define SO_NO_CHECK SYMBOLIC(SO_NO_CHECK)
+#define SO_OOBINLINE SYMBOLIC(SO_OOBINLINE)
+#define SO_PASSCRED SYMBOLIC(SO_PASSCRED)
+#define SO_PASSSEC SYMBOLIC(SO_PASSSEC)
+#define SO_PEEK_OFF SYMBOLIC(SO_PEEK_OFF)
+#define SO_PEERCRED SYMBOLIC(SO_PEERCRED)
+#define SO_PEERNAME SYMBOLIC(SO_PEERNAME)
+#define SO_PEERSEC SYMBOLIC(SO_PEERSEC)
+#define SO_PRIORITY SYMBOLIC(SO_PRIORITY)
+#define SO_PROTOCOL SYMBOLIC(SO_PROTOCOL)
+#define SO_RCVBUF SYMBOLIC(SO_RCVBUF)
+#define SO_RCVBUFFORCE SYMBOLIC(SO_RCVBUFFORCE)
+#define SO_RCVLOWAT SYMBOLIC(SO_RCVLOWAT)
+#define SO_RCVTIMEO SYMBOLIC(SO_RCVTIMEO)
+#define SO_REUSEADDR SYMBOLIC(SO_REUSEADDR)
+#define SO_REUSEPORT SYMBOLIC(SO_REUSEPORT)
+#define SO_RXQ_OVFL SYMBOLIC(SO_RXQ_OVFL)
+#define SO_SECURITY_AUTHENTICATION SYMBOLIC(SO_SECURITY_AUTHENTICATION)
+#define SO_SECURITY_ENCRYPTION_NETWORK SYMBOLIC(SO_SECURITY_ENCRYPTION_NETWORK)
+#define SO_SECURITY_ENCRYPTION_TRANSPORT SYMBOLIC(SO_SECURITY_ENCRYPTION_TRANSPORT)
+#define SO_SELECT_ERR_QUEUE SYMBOLIC(SO_SELECT_ERR_QUEUE)
+#define SO_SNDBUF SYMBOLIC(SO_SNDBUF)
+#define SO_SNDBUFFORCE SYMBOLIC(SO_SNDBUFFORCE)
+#define SO_SNDLOWAT SYMBOLIC(SO_SNDLOWAT)
+#define SO_SNDTIMEO SYMBOLIC(SO_SNDTIMEO)
+#define SO_TIMESTAMP SYMBOLIC(SO_TIMESTAMP)
+#define SO_TIMESTAMPING SYMBOLIC(SO_TIMESTAMPING)
+#define SO_TIMESTAMPNS SYMBOLIC(SO_TIMESTAMPNS)
+#define SO_TYPE SYMBOLIC(SO_TYPE)
+#define SO_WIFI_STATUS SYMBOLIC(SO_WIFI_STATUS)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long SO_ACCEPTCONN;
+extern const long SO_ATTACH_BPF;
+extern const long SO_ATTACH_FILTER;
+extern const long SO_ATTACH_REUSEPORT_CBPF;
+extern const long SO_ATTACH_REUSEPORT_EBPF;
+extern const long SO_BINDTODEVICE;
+extern const long SO_BPF_EXTENSIONS;
+extern const long SO_BROADCAST;
+extern const long SO_BSDCOMPAT;
+extern const long SO_BUSY_POLL;
+extern const long SO_CNX_ADVICE;
+extern const long SO_DEBUG;
+extern const long SO_DETACH_BPF;
+extern const long SO_DETACH_FILTER;
+extern const long SO_DOMAIN;
+extern const long SO_DONTROUTE;
+extern const long SO_ERROR;
+extern const long SO_EXCLUSIVEADDRUSE;
+extern const long SO_GET_FILTER;
+extern const long SO_INCOMING_CPU;
+extern const long SO_KEEPALIVE;
+extern const long SO_LINGER;
+extern const long SO_LOCK_FILTER;
+extern const long SO_MARK;
+extern const long SO_MAX_PACING_RATE;
+extern const long SO_NOFCS;
+extern const long SO_NO_CHECK;
+extern const long SO_OOBINLINE;
+extern const long SO_PASSCRED;
+extern const long SO_PASSSEC;
+extern const long SO_PEEK_OFF;
+extern const long SO_PEERCRED;
+extern const long SO_PEERNAME;
+extern const long SO_PEERSEC;
+extern const long SO_PRIORITY;
+extern const long SO_PROTOCOL;
+extern const long SO_RCVBUF;
+extern const long SO_RCVBUFFORCE;
+extern const long SO_RCVLOWAT;
+extern const long SO_RCVTIMEO;
+extern const long SO_REUSEADDR;
+extern const long SO_REUSEPORT;
+extern const long SO_RXQ_OVFL;
+extern const long SO_SECURITY_AUTHENTICATION;
+extern const long SO_SECURITY_ENCRYPTION_NETWORK;
+extern const long SO_SECURITY_ENCRYPTION_TRANSPORT;
+extern const long SO_SELECT_ERR_QUEUE;
+extern const long SO_SNDBUF;
+extern const long SO_SNDBUFFORCE;
+extern const long SO_SNDLOWAT;
+extern const long SO_SNDTIMEO;
+extern const long SO_TIMESTAMP;
+extern const long SO_TIMESTAMPING;
+extern const long SO_TIMESTAMPNS;
+extern const long SO_TYPE;
+extern const long SO_WIFI_STATUS;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/sock.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SOCK_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long SOCK_CLOEXEC;
+extern const long SOCK_DCCP;
+extern const long SOCK_DGRAM;
+extern const long SOCK_NONBLOCK;
+extern const long SOCK_PACKET;
+extern const long SOCK_RAW;
+extern const long SOCK_RDM;
+extern const long SOCK_SEQPACKET;
+extern const long SOCK_STREAM;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define SOCK_CLOEXEC SYMBOLIC(SOCK_CLOEXEC)
+#define SOCK_DCCP SYMBOLIC(SOCK_DCCP)
+#define SOCK_DGRAM LITERALLY(2)
+#define SOCK_NONBLOCK SYMBOLIC(SOCK_NONBLOCK)
+#define SOCK_PACKET SYMBOLIC(SOCK_PACKET)
+#define SOCK_RAW LITERALLY(3)
+#define SOCK_RDM LITERALLY(4)
+#define SOCK_SEQPACKET LITERALLY(5)
+#define SOCK_STREAM LITERALLY(1)
+
+
+
+/*!BEGIN libc/sysv/consts/sol.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SOL_H_
+
+#define SOL_AAL SYMBOLIC(SOL_AAL)
+#define SOL_ALG SYMBOLIC(SOL_ALG)
+#define SOL_ATM SYMBOLIC(SOL_ATM)
+#define SOL_BLUETOOTH SYMBOLIC(SOL_BLUETOOTH)
+#define SOL_CAIF SYMBOLIC(SOL_CAIF)
+#define SOL_DCCP SYMBOLIC(SOL_DCCP)
+#define SOL_DECNET SYMBOLIC(SOL_DECNET)
+#define SOL_ICMPV6 SYMBOLIC(SOL_ICMPV6)
+#define SOL_IP SYMBOLIC(SOL_IP)
+#define SOL_IPV6 SYMBOLIC(SOL_IPV6)
+#define SOL_IRDA SYMBOLIC(SOL_IRDA)
+#define SOL_IUCV SYMBOLIC(SOL_IUCV)
+#define SOL_KCM SYMBOLIC(SOL_KCM)
+#define SOL_LLC SYMBOLIC(SOL_LLC)
+#define SOL_NETBEUI SYMBOLIC(SOL_NETBEUI)
+#define SOL_NETLINK SYMBOLIC(SOL_NETLINK)
+#define SOL_NFC SYMBOLIC(SOL_NFC)
+#define SOL_PACKET SYMBOLIC(SOL_PACKET)
+#define SOL_PNPIPE SYMBOLIC(SOL_PNPIPE)
+#define SOL_PPPOL2TP SYMBOLIC(SOL_PPPOL2TP)
+#define SOL_RAW SYMBOLIC(SOL_RAW)
+#define SOL_RDS SYMBOLIC(SOL_RDS)
+#define SOL_RXRPC SYMBOLIC(SOL_RXRPC)
+#define SOL_SOCKET SYMBOLIC(SOL_SOCKET)
+#define SOL_TCP SYMBOLIC(SOL_TCP)
+#define SOL_TIPC SYMBOLIC(SOL_TIPC)
+#define SOL_UDP SYMBOLIC(SOL_UDP)
+#define SOL_X25 SYMBOLIC(SOL_X25)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long SOL_AAL;
+extern const long SOL_ALG;
+extern const long SOL_ATM;
+extern const long SOL_BLUETOOTH;
+extern const long SOL_CAIF;
+extern const long SOL_DCCP;
+extern const long SOL_DECNET;
+extern const long SOL_ICMPV6;
+extern const long SOL_IP;
+extern const long SOL_IPV6;
+extern const long SOL_IRDA;
+extern const long SOL_IUCV;
+extern const long SOL_KCM;
+extern const long SOL_LLC;
+extern const long SOL_NETBEUI;
+extern const long SOL_NETLINK;
+extern const long SOL_NFC;
+extern const long SOL_PACKET;
+extern const long SOL_PNPIPE;
+extern const long SOL_PPPOL2TP;
+extern const long SOL_RAW;
+extern const long SOL_RDS;
+extern const long SOL_RXRPC;
+extern const long SOL_SOCKET;
+extern const long SOL_TCP;
+extern const long SOL_TIPC;
+extern const long SOL_UDP;
+extern const long SOL_X25;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/splice.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SPLICE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long SPLICE_F_GIFT;
+extern const long SPLICE_F_MORE;
+extern const long SPLICE_F_MOVE;
+extern const long SPLICE_F_NONBLOCK;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define SPLICE_F_GIFT SYMBOLIC(SPLICE_F_GIFT)
+#define SPLICE_F_MORE SYMBOLIC(SPLICE_F_MORE)
+#define SPLICE_F_MOVE SYMBOLIC(SPLICE_F_MOVE)
+#define SPLICE_F_NONBLOCK SYMBOLIC(SPLICE_F_NONBLOCK)
+
+
+
+/*!BEGIN libc/sysv/consts/st.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_ST_H_
+
+#define ST_APPEND SYMBOLIC(ST_APPEND)
+#define ST_IMMUTABLE SYMBOLIC(ST_IMMUTABLE)
+#define ST_MANDLOCK SYMBOLIC(ST_MANDLOCK)
+#define ST_NOATIME SYMBOLIC(ST_NOATIME)
+#define ST_NODEV SYMBOLIC(ST_NODEV)
+#define ST_NODIRATIME SYMBOLIC(ST_NODIRATIME)
+#define ST_NOEXEC SYMBOLIC(ST_NOEXEC)
+#define ST_NOSUID SYMBOLIC(ST_NOSUID)
+#define ST_RDONLY SYMBOLIC(ST_RDONLY)
+#define ST_RELATIME SYMBOLIC(ST_RELATIME)
+#define ST_SYNCHRONOUS SYMBOLIC(ST_SYNCHRONOUS)
+#define ST_WRITE SYMBOLIC(ST_WRITE)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long ST_APPEND;
+extern const long ST_IMMUTABLE;
+extern const long ST_MANDLOCK;
+extern const long ST_NOATIME;
+extern const long ST_NODEV;
+extern const long ST_NODIRATIME;
+extern const long ST_NOEXEC;
+extern const long ST_NOSUID;
+extern const long ST_RDONLY;
+extern const long ST_RELATIME;
+extern const long ST_SYNCHRONOUS;
+extern const long ST_WRITE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/tcp.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_TCP_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long TCP_CC_INFO;
+extern const long TCP_CONGESTION;
+extern const long TCP_COOKIE_TRANSACTIONS;
+extern const long TCP_CORK;
+extern const long TCP_DEFER_ACCEPT;
+extern const long TCP_FASTOPEN;
+extern const long TCP_INFO;
+extern const long TCP_KEEPCNT;
+extern const long TCP_KEEPIDLE;
+extern const long TCP_KEEPINTVL;
+extern const long TCP_LINGER2;
+extern const long TCP_MAXSEG;
+extern const long TCP_MD5SIG;
+extern const long TCP_MD5SIG_MAXKEYLEN;
+extern const long TCP_NODELAY;
+extern const long TCP_NOTSENT_LOWAT;
+extern const long TCP_QUEUE_SEQ;
+extern const long TCP_QUICKACK;
+extern const long TCP_REPAIR;
+extern const long TCP_REPAIR_OPTIONS;
+extern const long TCP_REPAIR_QUEUE;
+extern const long TCP_SAVED_SYN;
+extern const long TCP_SAVE_SYN;
+extern const long TCP_SYNCNT;
+extern const long TCP_THIN_DUPACK;
+extern const long TCP_THIN_LINEAR_TIMEOUTS;
+extern const long TCP_TIMESTAMP;
+extern const long TCP_USER_TIMEOUT;
+extern const long TCP_WINDOW_CLAMP;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define TCP_CC_INFO SYMBOLIC(TCP_CC_INFO)
+#define TCP_CONGESTION SYMBOLIC(TCP_CONGESTION)
+#define TCP_COOKIE_TRANSACTIONS SYMBOLIC(TCP_COOKIE_TRANSACTIONS)
+#define TCP_CORK SYMBOLIC(TCP_CORK)
+#define TCP_DEFER_ACCEPT SYMBOLIC(TCP_DEFER_ACCEPT)
+#define TCP_FASTOPEN SYMBOLIC(TCP_FASTOPEN)
+#define TCP_INFO SYMBOLIC(TCP_INFO)
+#define TCP_KEEPCNT SYMBOLIC(TCP_KEEPCNT)
+#define TCP_KEEPIDLE SYMBOLIC(TCP_KEEPIDLE)
+#define TCP_KEEPINTVL SYMBOLIC(TCP_KEEPINTVL)
+#define TCP_LINGER2 SYMBOLIC(TCP_LINGER2)
+#define TCP_MAXSEG SYMBOLIC(TCP_MAXSEG)
+#define TCP_MD5SIG SYMBOLIC(TCP_MD5SIG)
+#define TCP_MD5SIG_MAXKEYLEN SYMBOLIC(TCP_MD5SIG_MAXKEYLEN)
+#define TCP_NODELAY LITERALLY(1)
+#define TCP_NOTSENT_LOWAT SYMBOLIC(TCP_NOTSENT_LOWAT)
+#define TCP_QUEUE_SEQ SYMBOLIC(TCP_QUEUE_SEQ)
+#define TCP_QUICKACK SYMBOLIC(TCP_QUICKACK)
+#define TCP_REPAIR SYMBOLIC(TCP_REPAIR)
+#define TCP_REPAIR_OPTIONS SYMBOLIC(TCP_REPAIR_OPTIONS)
+#define TCP_REPAIR_QUEUE SYMBOLIC(TCP_REPAIR_QUEUE)
+#define TCP_SAVED_SYN SYMBOLIC(TCP_SAVED_SYN)
+#define TCP_SAVE_SYN SYMBOLIC(TCP_SAVE_SYN)
+#define TCP_SYNCNT SYMBOLIC(TCP_SYNCNT)
+#define TCP_THIN_DUPACK SYMBOLIC(TCP_THIN_DUPACK)
+#define TCP_THIN_LINEAR_TIMEOUTS SYMBOLIC(TCP_THIN_LINEAR_TIMEOUTS)
+#define TCP_TIMESTAMP SYMBOLIC(TCP_TIMESTAMP)
+#define TCP_USER_TIMEOUT SYMBOLIC(TCP_USER_TIMEOUT)
+#define TCP_WINDOW_CLAMP SYMBOLIC(TCP_WINDOW_CLAMP)
+
+
+
+/*!BEGIN libc/sysv/consts/tcpopt.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_TCPOPT_H_
+
+#define TCPOPT_EOL SYMBOLIC(TCPOPT_EOL)
+#define TCPOPT_MAXSEG SYMBOLIC(TCPOPT_MAXSEG)
+#define TCPOPT_NOP SYMBOLIC(TCPOPT_NOP)
+#define TCPOPT_SACK SYMBOLIC(TCPOPT_SACK)
+#define TCPOPT_SACK_PERMITTED SYMBOLIC(TCPOPT_SACK_PERMITTED)
+#define TCPOPT_TIMESTAMP SYMBOLIC(TCPOPT_TIMESTAMP)
+#define TCPOPT_WINDOW SYMBOLIC(TCPOPT_WINDOW)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long TCPOPT_EOL;
+extern const long TCPOPT_MAXSEG;
+extern const long TCPOPT_NOP;
+extern const long TCPOPT_SACK;
+extern const long TCPOPT_SACK_PERMITTED;
+extern const long TCPOPT_TIMESTAMP;
+extern const long TCPOPT_WINDOW;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/th.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_TH_H_
+
+#define TH_ACK SYMBOLIC(TH_ACK)
+#define TH_FIN SYMBOLIC(TH_FIN)
+#define TH_PUSH SYMBOLIC(TH_PUSH)
+#define TH_RST SYMBOLIC(TH_RST)
+#define TH_SYN SYMBOLIC(TH_SYN)
+#define TH_URG SYMBOLIC(TH_URG)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long TH_ACK;
+extern const long TH_FIN;
+extern const long TH_PUSH;
+extern const long TH_RST;
+extern const long TH_SYN;
+extern const long TH_URG;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/trap.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_TRAP_H_
+
+#define TRAP_BRKPT SYMBOLIC(TRAP_BRKPT)
+#define TRAP_TRACE SYMBOLIC(TRAP_TRACE)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long TRAP_BRKPT;
+extern const long TRAP_TRACE;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/type.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_TYPE_H_
+
+#define TYPE_A SYMBOLIC(TYPE_A)
+#define TYPE_DISK SYMBOLIC(TYPE_DISK)
+#define TYPE_E SYMBOLIC(TYPE_E)
+#define TYPE_ENCLOSURE SYMBOLIC(TYPE_ENCLOSURE)
+#define TYPE_I SYMBOLIC(TYPE_I)
+#define TYPE_L SYMBOLIC(TYPE_L)
+#define TYPE_MEDIUM_CHANGER SYMBOLIC(TYPE_MEDIUM_CHANGER)
+#define TYPE_MOD SYMBOLIC(TYPE_MOD)
+#define TYPE_NO_LUN SYMBOLIC(TYPE_NO_LUN)
+#define TYPE_PROCESSOR SYMBOLIC(TYPE_PROCESSOR)
+#define TYPE_ROM SYMBOLIC(TYPE_ROM)
+#define TYPE_SCANNER SYMBOLIC(TYPE_SCANNER)
+#define TYPE_TAPE SYMBOLIC(TYPE_TAPE)
+#define TYPE_WORM SYMBOLIC(TYPE_WORM)
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const long TYPE_A;
+extern const long TYPE_DISK;
+extern const long TYPE_E;
+extern const long TYPE_ENCLOSURE;
+extern const long TYPE_I;
+extern const long TYPE_L;
+extern const long TYPE_MEDIUM_CHANGER;
+extern const long TYPE_MOD;
+extern const long TYPE_NO_LUN;
+extern const long TYPE_PROCESSOR;
+extern const long TYPE_ROM;
+extern const long TYPE_SCANNER;
+extern const long TYPE_TAPE;
+extern const long TYPE_WORM;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/sysv/consts/utime.h */
+
+#define COSMOPOLITAN_LIBC_SYSV_CONSTS_UTIME_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern const int UTIME_NOW;
+extern const int UTIME_OMIT;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define UTIME_NOW  SYMBOLIC(UTIME_NOW)
+#define UTIME_OMIT SYMBOLIC(UTIME_OMIT)
+
+
+
+/*!BEGIN libc/time/struct/timezone.h */
+
+#define COSMOPOLITAN_LIBC_TIME_STRUCT_TIMEZONE_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct timezone {
+  int32_t tz_minuteswest;
+  int32_t tz_dsttime;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/time/struct/tm.h */
+
+#define COSMOPOLITAN_LIBC_TIME_STRUCT_TM_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct tm {
+  int32_t tm_sec;
+  int32_t tm_min;
+  int32_t tm_hour;
+  int32_t tm_mday; /* 1-indexed */
+  int32_t tm_mon;  /* 0-indexed */
+  int32_t tm_year; /* minus 1900 */
+  int32_t tm_wday;
+  int32_t tm_yday;
+  int32_t tm_isdst;
+  int64_t tm_gmtoff;
+  const char *tm_zone;
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/time/struct/utimbuf.h */
+
+#define COSMOPOLITAN_LIBC_TIME_STRUCT_UTIMBUF_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+struct utimbuf {
+  int64_t actime;  /* access time */
+  int64_t modtime; /* modified time */
+};
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/time/time.h */
+
+#define COSMOPOLITAN_LIBC_TIME_TIME_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+hidden extern const char kWeekdayNameShort[7][4];
+hidden extern const char kWeekdayName[7][10];
+hidden extern const char kMonthNameShort[12][4];
+hidden extern const char kMonthName[12][10];
+hidden extern const unsigned short kMonthYearDay[2][12];
+
+extern char *tzname[2];
+extern long CLOCKS_PER_SEC;
+
+int64_t clock(void);
+int64_t time(int64_t *);
+int gettimeofday(struct timeval *, struct timezone *);
+int clock_gettime(int, struct timespec *);
+int clock_getres(int, struct timespec *);
+
+int sleep(uint32_t);
+int usleep(uint32_t);
+int nanosleep(const struct timespec *, struct timespec *);
+unsigned alarm(unsigned);
+int getitimer(int, struct itimerval *);
+int setitimer(int, const struct itimerval *, struct itimerval *);
+
+void tzset(void);
+struct tm *gmtime(const int64_t *);
+struct tm *gmtime_r(const int64_t *, struct tm *);
+struct tm *localtime(const int64_t *);
+struct tm *localtime_r(const int64_t *, struct tm *);
+int64_t timegm(struct tm *);
+int64_t mktime(struct tm *);
+int64_t timelocal(struct tm *);
+int64_t timeoff(struct tm *, long);
+int64_t time2posix(int64_t) pureconst;
+int64_t posix2time(int64_t) pureconst;
+
+char *strptime(const char *, const char *, struct tm *);
+size_t strftime(char *, size_t, const char *, const struct tm *)
+    strftimeesque(3);
+char *asctime(const struct tm *);
+char *ctime(const int64_t *);
+char *ctime_r(const int64_t *, char[hasatleast 64]);
+char *asctime_r(const struct tm *, char[hasatleast 64]);
+
+int futimens(int, const struct timespec[2]);
+int utimensat(int, const char *, const struct timespec[2], int);
+int utimes(const char *, const struct timeval[2]);
+int utime(const char *, const struct utimbuf *);
+int futimes(int, const struct timeval[2]);
+int futimesat(int, const char *, const struct timeval[2]);
+
+long double dtime(int);
+long double dsleep(long double);
+extern long double (*nowl)(void);
+long double ConvertTicksToNanos(uint64_t);
+
+double difftime(int64_t, int64_t) nothrow pureconst;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/tinymath/emod.h */
+
+#define COSMOPOLITAN_LIBC_TINYMATH_EMOD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+/**
+ * Returns Euclidean floating-point division remainder.
+ *
+ * @return (𝑥 mod 𝑦) ∈ [0.,𝑦)
+ * @see fmod()
+ */
+static inline double emod(double x, double y) {
+  return x - fabs(y) * floor(x / fabs(y));
+}
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/tinymath/emodl.h */
+
+#define COSMOPOLITAN_LIBC_TINYMATH_EMODL_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+/**
+ * Returns Euclidean floating-point division remainder.
+ *
+ * @return (𝑥 mod 𝑦) ∈ [0.,𝑦)
+ * @see fmodl()
+ */
+static inline long double emodl(long double x, long double y) {
+  return x - fabsl(y) * floorl(x / fabsl(y));
+}
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/unicode/locale.h */
+
+#define COSMOPOLITAN_LIBC_UNICODE_LOCALE_H_
+
+#define LC_CTYPE         0
+#define LC_NUMERIC       1
+#define LC_CTYPE_MASK    1
+#define LC_TIME          2
+#define LC_NUMERIC_MASK  2
+#define LC_COLLATE       3
+#define LC_MONETARY      4
+#define LC_TIME_MASK     4
+#define LC_MESSAGES      5
+#define LC_ALL           6
+#define LC_COLLATE_MASK  8
+#define LC_MONETARY_MASK 16
+#define LC_MESSAGES_MASK 32
+#define LC_ALL_MASK      0x1fbf
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+char *setlocale(int, const char *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN libc/x/x.h */
+
+#define COSMOPOLITAN_LIBC_X_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § eXtended apis                                             ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+  Standard Library veneers for folks not building embedded RTOS */
+
+#define _XPNN   paramsnonnull()
+#define _XRET   nothrow nocallback nodiscard returnsnonnull
+#define _XMAL   returnspointerwithnoaliases _XRET
+#define _XMALPG returnsaligned((PAGESIZE)) _XMAL
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § eXtended apis » system calls                              ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+int xsigaction(int, void *, uint64_t, uint64_t, struct sigaction *);
+int xwrite(int, const void *, uint64_t);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § eXtended apis » memory                                    ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+void xdie(void) wontreturn;
+char *xdtoa(double) _XMAL;
+char *xdtoaf(float) _XMAL;
+char *xdtoal(long double) _XMAL;
+char *xasprintf(const char *, ...) printfesque(1) paramsnonnull((1)) _XMAL;
+char *xvasprintf(const char *, va_list) _XPNN _XMAL;
+char *xgetline(struct FILE *) _XPNN mallocesque;
+void *xmalloc(size_t) attributeallocsize((1)) _XMAL;
+void *xrealloc(void *, size_t) attributeallocsize((2)) _XRET;
+void *xcalloc(size_t, size_t) attributeallocsize((1, 2)) _XMAL;
+void *xvalloc(size_t) attributeallocsize((1)) _XMALPG;
+void *xmemalign(size_t, size_t) attributeallocalign((1))
+    attributeallocsize((2)) _XMAL;
+void *xmemalignzero(size_t, size_t) attributeallocalign((1))
+    attributeallocsize((2)) _XMAL;
+char *xstrdup(const char *) _XPNN _XMAL;
+char *xstrndup(const char *, size_t) _XPNN _XMAL;
+char *xstrcat(const char *, ...) paramsnonnull((1)) nullterminated() _XMAL;
+char *xstrmul(const char *, size_t) paramsnonnull((1)) _XMAL;
+char *xinet_ntop(int, const void *) _XPNN _XMAL;
+void *xunbinga(size_t, const char16_t *) attributeallocalign((1)) _XMAL _XRET;
+void *xunbing(const char16_t *) _XMAL _XRET;
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § eXtended apis » files                                     ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+int rmrf(const char *);
+int makedirs(const char *, unsigned);
+char *xdirname(const char *) paramsnonnull() _XMAL;
+char *xjoinpaths(const char *, const char *) paramsnonnull() _XMAL;
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § eXtended apis » time                                      ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+char *xiso8601i(int) mallocesque;
+char *xiso8601tv(struct timeval *) mallocesque;
+char *xiso8601ts(struct timespec *) mallocesque;
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § eXtended apis » input / output                            ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+char *xslurp(const char *, size_t *) paramsnonnull((1)) _XMALPG nodiscard;
+int xbarf(const char *, const void *, size_t);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § eXtended apis » safety                                    ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define xstrcat(...) (xstrcat)(__VA_ARGS__, NULL)
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § eXtended apis » generic typing                            ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#if __STDC_VERSION__ + 0 >= 201112
+
+#define xiso8601(TS) \
+  _Generic(*(TS), struct timeval : xiso8601tv, default : xiso8601ts)(TS)
+
+#endif /* C11 */
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § eXtended apis » link-time optimizations                   ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define xasprintf(FMT, ...) (xasprintf)(PFLINK(FMT), ##__VA_ARGS__)
+#define xvasprintf(FMT, VA) (xvasprintf)(PFLINK(FMT), VA)
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN third_party/gdtoa/gdtoa.h */
+
+#define COSMOPOLITAN_THIRD_PARTY_GDTOA_GDTOA_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+enum {
+  /* return values from strtodg */
+  STRTOG_Zero = 0,
+  STRTOG_Normal = 1,
+  STRTOG_Denormal = 2,
+  STRTOG_Infinite = 3,
+  STRTOG_NaN = 4,
+  STRTOG_NaNbits = 5,
+  STRTOG_NoNumber = 6,
+  STRTOG_Retmask = 7,
+
+  /* The following may be or-ed into one of the above values. */
+  STRTOG_Neg = 0x08,    /* does not affect STRTOG_Inexlo or STRTOG_Inexhi */
+  STRTOG_Inexlo = 0x10, /* returned result rounded toward zero */
+  STRTOG_Inexhi = 0x20, /* returned result rounded away from zero */
+  STRTOG_Inexact = 0x30,
+  STRTOG_Underflow = 0x40,
+  STRTOG_Overflow = 0x80
+};
+
+typedef struct FPI {
+  int nbits;
+  int emin;
+  int emax;
+  int rounding;
+  int sudden_underflow;
+  int int_max;
+} FPI;
+
+enum {
+  /* FPI.rounding values: same as FLT_ROUNDS */
+  FPI_Round_zero = 0,
+  FPI_Round_near = 1,
+  FPI_Round_up = 2,
+  FPI_Round_down = 3
+};
+
+char *dtoa(double d, int mode, int ndigits, int *decpt, int *sign, char **rve);
+char *gdtoa(const FPI *fpi, int be, unsigned *bits, int *kindp, int mode,
+            int ndigits, int *decpt, char **rve);
+void freedtoa(char *);
+
+double atof(const char *);
+float strtof(const char *, char **);
+double strtod(const char *, char **);
+int strtodg(const char *, char **, const FPI *, int *, unsigned *);
+long double strtold(const char *, char **);
+
+char *g_ddfmt(char *, double *, int, size_t);
+char *g_ddfmt_p(char *, double *, int, size_t, int);
+char *g_dfmt(char *, double *, int, size_t);
+char *g_dfmt_p(char *, double *, int, size_t, int);
+char *g_ffmt(char *, float *, int, size_t);
+char *g_ffmt_p(char *, float *, int, size_t, int);
+char *g_Qfmt(char *, void *, int, size_t);
+char *g_Qfmt_p(char *, void *, int, size_t, int);
+char *g_xfmt(char *, void *, int, size_t);
+char *g_xfmt_p(char *, void *, int, size_t, int);
+char *g_xLfmt(char *, void *, int, size_t);
+char *g_xLfmt_p(char *, void *, int, size_t, int);
+
+int strtoId(const char *, char **, double *, double *);
+int strtoIdd(const char *, char **, double *, double *);
+int strtoIf(const char *, char **, float *, float *);
+int strtoIQ(const char *, char **, void *, void *);
+int strtoIx(const char *, char **, void *, void *);
+int strtoIxL(const char *, char **, void *, void *);
+int strtord(const char *, char **, int, double *);
+int strtordd(const char *, char **, int, double *);
+int strtorf(const char *, char **, int, float *);
+int strtorQ(const char *, char **, int, void *);
+int strtorx(const char *, char **, int, void *);
+int strtorxL(const char *, char **, int, void *);
+
+#if 1
+int strtodI(const char *, char **, double *);
+int strtopd(const char *, char **, double *);
+int strtopdd(const char *, char **, double *);
+int strtopf(const char *, char **, float *);
+int strtopQ(const char *, char **, void *);
+int strtopx(const char *, char **, void *);
+int strtopxL(const char *, char **, void *);
+#else
+#define strtopd(s, se, x)  strtord(s, se, 1, x)
+#define strtopdd(s, se, x) strtordd(s, se, 1, x)
+#define strtopf(s, se, x)  strtorf(s, se, 1, x)
+#define strtopQ(s, se, x)  strtorQ(s, se, 1, x)
+#define strtopx(s, se, x)  strtorx(s, se, 1, x)
+#define strtopxL(s, se, x) strtorxL(s, se, 1, x)
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN third_party/getopt/getopt.h */
+
+#define COSMOPOLITAN_THIRD_PARTY_GETOPT_GETOPT_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern char *optarg;
+extern int optind, opterr, optopt, optreset;
+int getopt(int nargc, char *const nargv[], const char *ostr);
+
+#define no_argument 0
+#define required_argument 1
+#define optional_argument 2
+struct option {
+  const char *name;
+  int has_arg;
+  int *flag;
+  int val;
+};
+int getopt_long(int nargc, char *const *nargv, const char *options,
+                const struct option *long_options, int *idx);
+int getopt_long_only(int nargc, char *const *nargv, const char *options,
+                     const struct option *long_options, int *idx);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN third_party/musl/fnmatch.h */
+
+#define COSMOPOLITAN_THIRD_PARTY_REGEX_FNMATCH_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#define FNM_PATHNAME    0x1
+#define FNM_NOESCAPE    0x2
+#define FNM_PERIOD      0x4
+#define FNM_LEADING_DIR 0x8
+#define FNM_CASEFOLD    0x10
+#define FNM_FILE_NAME   FNM_PATHNAME
+
+#define FNM_NOMATCH 1
+#define FNM_NOSYS   (-1)
+
+int fnmatch(const char *, const char *, int);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN third_party/musl/glob.h */
+
+#define COSMOPOLITAN_THIRD_PARTY_MUSL_GLOB_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#define GLOB_ERR      0x01
+#define GLOB_MARK     0x02
+#define GLOB_NOSORT   0x04
+#define GLOB_DOOFFS   0x08 /* reserves null slots at start of gl_pathv */
+#define GLOB_NOCHECK  0x10 /* just yield pattern if GLOB_NOMATCH happens */
+#define GLOB_APPEND   0x20 /* enables us to call glob() multiple times */
+#define GLOB_NOESCAPE 0x40 /* don't allow things like \*\?\[\] escaping */
+#define GLOB_PERIOD   0x80
+
+#define GLOB_TILDE       0x1000
+#define GLOB_TILDE_CHECK 0x4000
+
+#define GLOB_NOSPACE 1
+#define GLOB_ABORTED 2
+#define GLOB_NOMATCH 3
+#define GLOB_NOSYS   4
+
+typedef struct {
+  size_t gl_pathc;
+  char **gl_pathv;
+  size_t gl_offs;
+  int __dummy1;
+  void *__dummy2[5];
+} glob_t;
+
+int glob(const char *, int, int (*)(const char *, int), glob_t *);
+void globfree(glob_t *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN third_party/musl/passwd.h */
+
+#define COSMOPOLITAN_LIBC_PASSWD_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct FILE;
+
+struct passwd {
+  char *pw_name;
+  char *pw_passwd;
+  uint32_t pw_uid;
+  uint32_t pw_gid;
+  char *pw_gecos;
+  char *pw_dir;
+  char *pw_shell;
+};
+
+void setpwent(void);
+void endpwent(void);
+struct passwd *getpwent(void);
+struct passwd *getpwuid(uint32_t);
+struct passwd *getpwnam(const char *);
+int getpwuid_r(uint32_t, struct passwd *, char *, size_t, struct passwd **);
+int getpwnam_r(const char *, struct passwd *, char *, size_t, struct passwd **);
+struct passwd *fgetpwent(struct FILE *);
+int putpwent(const struct passwd *, struct FILE *);
+
+struct group {
+  char *gr_name;
+  char *gr_passwd;
+  int32_t gr_gid;
+  char **gr_mem;
+};
+
+struct group *getgrgid(gid_t);
+struct group *getgrnam(const char *);
+int getgrgid_r(gid_t, struct group *, char *, size_t, struct group **);
+int getgrnam_r(const char *, struct group *, char *, size_t, struct group **);
+struct group *getgrent(void);
+void endgrent(void);
+void setgrent(void);
+struct group *fgetgrent(struct FILE *);
+int putgrent(const struct group *, struct FILE *);
+int getgrouplist(const char *, gid_t, gid_t *, int *);
+int setgroups(size_t, const int32_t *);
+int initgroups(const char *, int32_t);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN third_party/musl/tempnam.h */
+
+#define COSMOPOLITAN_THIRD_PARTY_MUSL_TEMPNAM_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+char *tempnam(const char *, const char *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN third_party/zlib/zlib.h */
+
+#define COSMOPOLITAN_THIRD_PARTY_ZLIB_ZLIB_H_
+
+
+/*!BEGIN third_party/zlib/zconf.h */
+
+#define COSMOPOLITAN_THIRD_PARTY_ZLIB_ZCONF_H_
+
+#define STDC
+#define STDC99
+#define MAX_MEM_LEVEL 9
+#define DEF_MEM_LEVEL 8
+#define MAX_WBITS 15 /* 32K LZ77 window */
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+
+typedef unsigned char Byte;
+typedef unsigned int uInt;   /* 16 bits or more */
+typedef unsigned long uLong; /* 32 bits or more */
+typedef Byte Bytef;
+typedef char charf;
+typedef int intf;
+typedef uInt uIntf;
+typedef uLong uLongf;
+typedef void const *voidpc;
+typedef void *voidpf;
+typedef void *voidp;
+
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+/**
+ * @fileoverview zlib
+ *
+ * The 'zlib' compression library provides in-memory
+ * compression and decompression functions, including integrity checks
+ * of the uncompressed data. This version of the library supports only
+ * one compression method (deflation) but other algorithms will be added
+ * later and will have the same stream interface.
+ *
+ * Compression can be done in a single step if the buffers are large enough,
+ * or can be done by repeated calls of the compression function.  In the latter
+ * case, the application must provide more input and/or consume the output
+ * (providing more output space) before each call.
+ *
+ * The compressed data format used by default by the in-memory functions is
+ * the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
+ * around a deflate stream, which is itself documented in RFC 1951.
+ *
+ * The library also supports reading and writing files in gzip (.gz) format
+ * with an interface similar to that of stdio using the functions that start
+ * with "gz".  The gzip format is different from the zlib format.  gzip is a
+ * gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
+ *
+ * This library can optionally read and write gzip and raw deflate streams in
+ * memory as well.
+ *
+ * The zlib format was designed to be compact and fast for use in memory
+ * and on communications channels.  The gzip format was designed for single-
+ * file compression on file systems, has a larger header than zlib to maintain
+ * directory information, and uses a different, slower check method than zlib.
+ *
+ * The library does not install any signal handler.  The decoder checks
+ * the consistency of the compressed data, so the library should never crash
+ * even in the case of corrupted input.
+ */
+
+#define ZLIB_VERSION         "1.2.11"
+#define ZLIB_VERNUM          0x12b0
+#define ZLIB_VER_MAJOR       1
+#define ZLIB_VER_MINOR       2
+#define ZLIB_VER_REVISION    11
+#define ZLIB_VER_SUBREVISION 0
+
+/**
+ * The application must update next_in and avail_in when avail_in has
+ * dropped to zero. It must update next_out and avail_out when avail_out
+ * has dropped to zero. The application must initialize zalloc, zfree
+ * and opaque before calling the init function. All other fields are set
+ * by the compression library and must not be updated by the
+ * application.
+ *
+ * The opaque value provided by the application will be passed as the
+ * first parameter for calls of zalloc and zfree. This can be useful for
+ * custom memory management. The compression library attaches no meaning
+ * to the opaque value.
+ *
+ * zalloc must return Z_NULL if there is not enough memory for the
+ * object. If zlib is used in a multi-threaded application, zalloc and
+ * zfree must be thread safe. In that case, zlib is thread-safe. When
+ * zalloc and zfree are Z_NULL on entry to the initialization function,
+ * they are set to internal routines that use the standard library
+ * functions malloc() and free().
+ *
+ * On 16-bit systems, the functions zalloc and zfree must be able to
+ * allocate exactly 65536 bytes, but will not be required to allocate
+ * more than this if the symbol MAXSEG_64K is defined (see zconf.h).
+ * WARNING: On MSDOS, pointers returned by zalloc for objects of exactly
+ * 65536 bytes *must* have their offset normalized to zero. The default
+ * allocation function provided by this library ensures this (see
+ * zutil.c). To reduce memory requirements and avoid any allocation of
+ * 64K objects, at the expense of compression ratio, compile the library
+ * with -DMAX_WBITS=14 (see zconf.h).
+ *
+ * The fields total_in and total_out can be used for statistics or
+ * progress reports. After compression, total_in holds the total size of
+ * the uncompressed data and may be saved for use by the decompressor
+ * (particularly if the decompressor wants to decompress everything in a
+ * single step).
+ */
+#define Z_NO_FLUSH      0
+#define Z_PARTIAL_FLUSH 1
+#define Z_SYNC_FLUSH    2
+#define Z_FULL_FLUSH    3
+#define Z_FINISH        4
+#define Z_BLOCK         5
+#define Z_TREES         6
+
+/**
+ * Allowed flush values; see deflate() and inflate() below for details.
+ */
+#define Z_OK            0
+#define Z_STREAM_END    1
+#define Z_NEED_DICT     2
+#define Z_ERRNO         (-1)
+#define Z_STREAM_ERROR  (-2)
+#define Z_DATA_ERROR    (-3)
+#define Z_MEM_ERROR     (-4)
+#define Z_BUF_ERROR     (-5)
+#define Z_VERSION_ERROR (-6)
+
+/**
+ * Return codes for the compression/decompression functions. Negative
+ * values are errors, positive values are used for special but normal
+ * events.
+ */
+#define Z_NO_COMPRESSION      0
+#define Z_BEST_SPEED          1
+#define Z_BEST_COMPRESSION    9
+#define Z_DEFAULT_COMPRESSION (-1)
+
+/**
+ * Compression levels.
+ */
+#define Z_FILTERED         1
+#define Z_HUFFMAN_ONLY     2
+#define Z_RLE              3
+#define Z_FIXED            4
+#define Z_DEFAULT_STRATEGY 0
+
+/**
+ * Compression strategy; see deflateInit2() below for details
+ */
+#define Z_BINARY  0
+#define Z_TEXT    1
+#define Z_ASCII   Z_TEXT /* for compatibility with 1.2.2 and earlier */
+#define Z_UNKNOWN 2
+
+/**
+ * Possible values of the data_type field for deflate()
+ */
+#define Z_DEFLATED 8
+
+/* The deflate compression method (the only one supported in this version) */
+#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+typedef voidpf (*alloc_func)(voidpf opaque, uInt items, uInt size);
+typedef void (*free_func)(voidpf opaque, voidpf address);
+
+struct DeflateState;
+
+typedef struct z_stream_s {
+  const Bytef *next_in;       /* next input byte */
+  uInt avail_in;              /* number of bytes available at next_in */
+  uLong total_in;             /* total number of input bytes read so far */
+  Bytef *next_out;            /* next output byte will go here */
+  uInt avail_out;             /* remaining free space at next_out */
+  uLong total_out;            /* total number of bytes output so far */
+  const char *msg;            /* last error message, NULL if no error */
+  struct DeflateState *state; /* not visible by applications */
+  alloc_func zalloc;          /* used to allocate the internal state */
+  free_func zfree;            /* used to free the internal state */
+  voidpf opaque;  /* private data object passed to zalloc and zfree */
+  int data_type;  /* best guess about the data type: binary or text
+                     for deflate, or the decoding state for inflate */
+  uLong adler;    /* Adler-32 or CRC-32 value of the uncompressed data */
+  uLong reserved; /* reserved for future use */
+} z_stream;
+
+typedef z_stream *z_streamp;
+
+/**
+ * gzip header information passed to and from zlib routines. See RFC
+ * 1952 for more details on the meanings of these fields.
+ */
+typedef struct gz_header_s {
+  int text;       /* true if compressed data believed to be text */
+  uLong time;     /* modification time */
+  int xflags;     /* extra flags (not used when writing a gzip file) */
+  int os;         /* operating system */
+  Bytef *extra;   /* pointer to extra field or Z_NULL if none */
+  uInt extra_len; /* extra field length (valid if extra != Z_NULL) */
+  uInt extra_max; /* space at extra (only when reading header) */
+  Bytef *name;    /* pointer to zero-terminated file name or Z_NULL */
+  uInt name_max;  /* space at name (only when reading header) */
+  Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */
+  uInt comm_max;  /* space at comment (only when reading header) */
+  int hcrc;       /* true if there was or will be a header crc */
+  int done;       /* true when done reading gzip header (not used
+                     when writing a gzip file) */
+} gz_header;
+
+typedef gz_header *gz_headerp;
+
+#define zlib_version zlibVersion()
+
+/**
+ * The application can compare zlibVersion and ZLIB_VERSION for consistency.
+ * If the first character differs, the library code actually used is not
+ * compatible with the zlib.h header file used by the application.  This check
+ * is automatically made by deflateInit and inflateInit.
+ */
+const char *zlibVersion(void);
+
+/**
+ * Initializes the internal stream state for compression.  The fields
+ * zalloc, zfree and opaque must be initialized before by the caller.  If
+ * zalloc and zfree are set to Z_NULL, deflateInit updates them to use default
+ * allocation functions.
+ *
+ * The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
+ * 1 gives best speed, 9 gives best compression, 0 gives no compression at all
+ * (the input data is simply copied a block at a time).  Z_DEFAULT_COMPRESSION
+ * requests a default compromise between speed and compression (currently
+ * equivalent to level 6).
+ *
+ * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory,
+ *     or Z_STREAM_ERROR if level is not a valid compression level. msg
+ *     is set to null if there is no error message. deflateInit does not
+ *     perform any compression: this will be done by deflate().
+ */
+int deflateInit(z_streamp strm, int level);
+
+/**
+ * deflate compresses as much data as possible, and stops when the input
+ * buffer becomes empty or the output buffer becomes full. It may
+ * introduce some output latency (reading input without producing any
+ * output) except when forced to flush.
+ *
+ * The detailed semantics are as follows. deflate performs one or both
+ * of the following actions:
+ *
+ * - Compress more input starting at next_in and update next_in and
+ *  avail_in accordingly. If not all input can be processed (because
+ *  there is not enough room in the output buffer), next_in and avail_in
+ *  are updated and processing will resume at this point for the next
+ *  call of deflate().
+ *
+ * - Generate more output starting at next_out and update next_out and
+ *  avail_out accordingly. This action is forced if the parameter flush
+ *  is non zero. Forcing flush frequently degrades the compression
+ *  ratio, so this parameter should be set only when necessary. Some
+ *  output may be provided even if flush is zero.
+ *
+ * Before the call of deflate(), the application should ensure that at
+ * least one of the actions is possible, by providing more input and/or
+ * consuming more output, and updating avail_in or avail_out
+ * accordingly; avail_out should never be zero before the call. The
+ * application can consume the compressed output when it wants, for
+ * example when the output buffer is full (avail_out == 0), or after
+ * each call of deflate(). If deflate returns Z_OK and with zero
+ * avail_out, it must be called again after making room in the output
+ * buffer because there might be more output pending. See
+ * deflatePending(), which can be used if desired to determine whether
+ * or not there is more ouput in that case.
+ *
+ * Normally the parameter flush is set to Z_NO_FLUSH, which allows
+ * deflate to decide how much data to accumulate before producing
+ * output, in order to maximize compression.
+ *
+ * If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
+ * flushed to the output buffer and the output is aligned on a byte
+ * boundary, so that the decompressor can get all input data available
+ * so far. (In particular avail_in is zero after the call if enough
+ * output space has been provided before the call.) Flushing may degrade
+ * compression for some compression algorithms and so it should be used
+ * only when necessary. This completes the current deflate block and
+ * follows it with an empty stored block that is three bits plus filler
+ * bits to the next byte, followed by four bytes (00 00 ff ff).
+ *
+ * If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to
+ * the output buffer, but the output is not aligned to a byte boundary.
+ * All of the input data so far will be available to the decompressor,
+ * as for Z_SYNC_FLUSH. This completes the current deflate block and
+ * follows it with an empty fixed codes block that is 10 bits long. This
+ * assures that enough bytes are output in order for the decompressor to
+ * finish the block before the empty fixed codes block.
+ *
+ * If flush is set to Z_BLOCK, a deflate block is completed and emitted,
+ * as for Z_SYNC_FLUSH, but the output is not aligned on a byte
+ * boundary, and up to seven bits of the current block are held to be
+ * written as the next byte after the next deflate block is completed.
+ * In this case, the decompressor may not be provided enough bits at
+ * this point in order to complete decompression of the data provided so
+ * far to the compressor. It may need to wait for the next block to be
+ * emitted. This is for advanced applications that need to control the
+ * emission of deflate blocks.
+ *
+ * If flush is set to Z_FULL_FLUSH, all output is flushed as with
+ * Z_SYNC_FLUSH, and the compression state is reset so that
+ * decompression can restart from this point if previous compressed data
+ * has been damaged or if random access is desired. Using Z_FULL_FLUSH
+ * too often can seriously degrade compression.
+ *
+ * If deflate returns with avail_out == 0, this function must be called
+ * again with the same value of the flush parameter and more output
+ * space (updated avail_out), until the flush is complete (deflate
+ * returns with non-zero avail_out). In the case of a Z_FULL_FLUSH or
+ * Z_SYNC_FLUSH, make sure that avail_out is greater than six to avoid
+ * repeated flush markers due to avail_out == 0 on return.
+ *
+ * If the parameter flush is set to Z_FINISH, pending input is
+ * processed, pending output is flushed and deflate returns with
+ * Z_STREAM_END if there was enough output space. If deflate returns
+ * with Z_OK or Z_BUF_ERROR, this function must be called again with
+ * Z_FINISH and more output space (updated avail_out) but no more input
+ * data, until it returns with Z_STREAM_END or an error. After deflate
+ * has returned Z_STREAM_END, the only possible operations on the stream
+ * are deflateReset or deflateEnd.
+ *
+ * Z_FINISH can be used in the first deflate call after deflateInit if
+ * all the compression is to be done in a single step. In order to
+ * complete in one call, avail_out must be at least the value returned
+ * by deflateBound (see below). Then deflate is guaranteed to return
+ * Z_STREAM_END. If not enough output space is provided, deflate will
+ * not return Z_STREAM_END, and it must be called again as described
+ * above.
+ *
+ * deflate() sets strm->adler to the Adler-32 checksum of all input read
+ * so far (that is, total_in bytes). If a gzip stream is being
+ * generated, then strm->adler will be the CRC-32 checksum of the input
+ * read so far. (See deflateInit2 below.)
+ *
+ * deflate() may update strm->data_type if it can make a good guess about
+ * the input data type (Z_BINARY or Z_TEXT).  If in doubt, the data is
+ * considered binary.  This field is only for information purposes and does not
+ * affect the compression algorithm in any manner.
+ *
+ * @return Z_OK if some progress has been made (more input processed or
+ *     more output produced), Z_STREAM_END if all input has been
+ *     consumed and all output has been produced (only when flush is set
+ *     to Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent
+ *     (for example if next_in or next_out was Z_NULL or the state was
+ *     inadvertently written over by the application), or Z_BUF_ERROR if
+ *     no progress is possible (for example avail_in or avail_out was
+ *     zero). Note that Z_BUF_ERROR is not fatal, and deflate() can be
+ *     called again with more input and more output space to continue
+ *     compressing.
+ */
+int deflate(z_streamp strm, int flush);
+
+/**
+ * All dynamically allocated data structures for this stream are freed.
+ * This function discards any unprocessed input and does not flush any
+ * pending output.
+ *
+ * @return Z_OK if success, Z_STREAM_ERROR if the stream state was
+ *     inconsistent, Z_DATA_ERROR if the stream was freed prematurely
+ *     (some input or output was discarded). In the error case, msg may
+ *     be set but then points to a static string (which must not be
+ *     deallocated).
+ */
+int deflateEnd(z_streamp strm);
+
+/**
+ * Initializes the internal stream state for decompression. The fields
+ * next_in, avail_in, zalloc, zfree and opaque must be initialized
+ * before by the caller. In the current version of inflate, the provided
+ * input is not read or consumed. The allocation of a sliding window
+ * will be deferred to the first call of inflate (if the decompression
+ * does not complete on the first call). If zalloc and zfree are set to
+ * Z_NULL, inflateInit updates them to use default allocation functions.
+ *
+ * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory,
+ *     or Z_STREAM_ERROR if the parameters are invalid, such as a null
+ *     pointer to the structure. msg is set to null if there is no error
+ *     message. inflateInit does not perform any decompression. Actual
+ *     decompression will be done by inflate(). So next_in, and
+ *     avail_in, next_out, and avail_out are unused and unchanged. The
+ *     current implementation of inflateInit() does not process any
+ *     header information -- that is deferred until inflate() is called.
+ */
+int inflateInit(z_streamp strm);
+
+/**
+ * inflate decompresses as much data as possible, and stops when the input
+ * buffer becomes empty or the output buffer becomes full.  It may introduce
+ * some output latency (reading input without producing any output) except when
+ * forced to flush.
+ *
+ * The detailed semantics are as follows.  inflate performs one or both of the
+ * following actions:
+ *
+ * - Decompress more input starting at next_in and update next_in and
+ *   avail_in accordingly. If not all input can be processed (because
+ *   there is not enough room in the output buffer), then next_in and
+ *   avail_in are updated accordingly, and processing will resume at
+ *   this point for the next call of inflate().
+ *
+ * - Generate more output starting at next_out and update next_out and
+ *   avail_out accordingly. inflate() provides as much output as
+ *   possible, until there is no more input data or no more space in the
+ *   output buffer (see below about the flush parameter).
+ *
+ * Before the call of inflate(), the application should ensure that at
+ * least one of the actions is possible, by providing more input and/or
+ * consuming more output, and updating the next_* and avail_* values
+ * accordingly. If the caller of inflate() does not provide both
+ * available input and available output space, it is possible that there
+ * will be no progress made. The application can consume the
+ * uncompressed output when it wants, for example when the output buffer
+ * is full (avail_out == 0), or after each call of inflate(). If inflate
+ * returns Z_OK and with zero avail_out, it must be called again after
+ * making room in the output buffer because there might be more output
+ * pending.
+ *
+ * The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
+ * Z_FINISH, Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate()
+ * flush as much output as possible to the output buffer. Z_BLOCK
+ * requests that inflate() stop if and when it gets to the next deflate
+ * block boundary. When decoding the zlib or gzip format, this will
+ * cause inflate() to return immediately after the header and before the
+ * first block. When doing a raw inflate, inflate() will go ahead and
+ * process the first block, and will return when it gets to the end of
+ * that block, or when it runs out of data.
+ *
+ * The Z_BLOCK option assists in appending to or combining deflate
+ * streams. To assist in this, on return inflate() always sets
+ * strm->data_type to the number of unused bits in the last byte taken
+ * from strm->next_in, plus 64 if inflate() is currently decoding the
+ * last block in the deflate stream, plus 128 if inflate() returned
+ * immediately after decoding an end-of-block code or decoding the
+ * complete header up to just before the first byte of the deflate
+ * stream. The end-of-block will not be indicated until all of the
+ * uncompressed data from that block has been written to strm->next_out.
+ * The number of unused bits may in general be greater than seven,
+ * except when bit 7 of data_type is set, in which case the number of
+ * unused bits will be less than eight. data_type is set as noted here
+ * every time inflate() returns for all flush options, and so can be
+ * used to determine the amount of currently consumed input in bits.
+ *
+ * The Z_TREES option behaves as Z_BLOCK does, but it also returns when
+ * the end of each deflate block header is reached, before any actual
+ * data in that block is decoded. This allows the caller to determine
+ * the length of the deflate block header for later use in random access
+ * within a deflate block. 256 is added to the value of strm->data_type
+ * when inflate() returns immediately after reaching the end of the
+ * deflate block header.
+ *
+ * inflate() should normally be called until it returns Z_STREAM_END or
+ * an error. However if all decompression is to be performed in a single
+ * step (a single call of inflate), the parameter flush should be set to
+ * Z_FINISH. In this case all pending input is processed and all pending
+ * output is flushed; avail_out must be large enough to hold all of the
+ * uncompressed data for the operation to complete. (The size of the
+ * uncompressed data may have been saved by the compressor for this
+ * purpose.) The use of Z_FINISH is not required to perform an inflation
+ * in one step. However it may be used to inform inflate that a faster
+ * approach can be used for the single inflate() call. Z_FINISH also
+ * informs inflate to not maintain a sliding window if the stream
+ * completes, which reduces inflate's memory footprint. If the stream
+ * does not complete, either because not all of the stream is provided
+ * or not enough output space is provided, then a sliding window will be
+ * allocated and inflate() can be called again to continue the operation
+ * as if Z_NO_FLUSH had been used.
+ *
+ * In this implementation, inflate() always flushes as much output as
+ * possible to the output buffer, and always uses the faster approach on
+ * the first call. So the effects of the flush parameter in this
+ * implementation are on the return value of inflate() as noted below,
+ * when inflate() returns early when Z_BLOCK or Z_TREES is used, and
+ * when inflate() avoids the allocation of memory for a sliding window
+ * when Z_FINISH is used.
+ *
+ * If a preset dictionary is needed after this call (see
+ * inflateSetDictionary below), inflate sets strm->adler to the Adler-32
+ * checksum of the dictionary chosen by the compressor and returns
+ * Z_NEED_DICT; otherwise it sets strm->adler to the Adler-32 checksum
+ * of all output produced so far (that is, total_out bytes) and returns
+ * Z_OK, Z_STREAM_END or an error code as described below. At the end of
+ * the stream, inflate() checks that its computed Adler-32 checksum is
+ * equal to that saved by the compressor and returns Z_STREAM_END only
+ * if the checksum is correct.
+ *
+ * inflate() can decompress and check either zlib-wrapped or
+ * gzip-wrapped deflate data. The header type is detected automatically,
+ * if requested when initializing with inflateInit2(). Any information
+ * contained in the gzip header is not retained unless
+ * inflateGetHeader() is used. When processing gzip-wrapped deflate
+ * data, strm->adler32 is set to the CRC-32 of the output produced so
+ * far. The CRC-32 is checked against the gzip trailer, as is the
+ * uncompressed length, modulo 2^32.
+ *
+ * @return Z_OK if some progress has been made (more input processed or
+ *     more output produced), Z_STREAM_END if the end of the compressed
+ *     data has been reached and all uncompressed output has been
+ *     produced, Z_NEED_DICT if a preset dictionary is needed at this
+ *     point, Z_DATA_ERROR if the input data was corrupted (input stream
+ *     not conforming to the zlib format or incorrect check value, in
+ *     which case strm->msg points to a string with a more specific
+ *     error), Z_STREAM_ERROR if the stream structure was inconsistent
+ *     (for example next_in or next_out was Z_NULL, or the state was
+ *     inadvertently written over by the application), Z_MEM_ERROR if
+ *     there was not enough memory, Z_BUF_ERROR if no progress was
+ *     possible or if there was not enough room in the output buffer
+ *     when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
+ *     inflate() can be called again with more input and more output
+ *     space to continue decompressing. If Z_DATA_ERROR is returned, the
+ *     application may then call inflateSync() to look for a good
+ *     compression block if a partial recovery of the data is to be
+ *     attempted.
+ */
+int inflate(z_streamp strm, int flush);
+
+/**
+ * All dynamically allocated data structures for this stream are freed.
+ * This function discards any unprocessed input and does not flush any
+ * pending output.
+ *
+ * @return Z_OK or Z_STREAM_ERROR if stream state inconsistent
+ */
+int inflateEnd(z_streamp strm);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § zlib » special functions                                  ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+  the following functions are needed only in some special applications */
+
+/**
+ * This is another version of deflateInit with more compression options.
+ * The fields next_in, zalloc, zfree and opaque must be initialized
+ * before by the caller.
+ *
+ * The method parameter is the compression method. It must be Z_DEFLATED
+ * in this version of the library.
+ *
+ * The windowBits parameter is the base two logarithm of the window size
+ * (the size of the history buffer). It should be in the range 8..15 for
+ * this version of the library. Larger values of this parameter result
+ * in better compression at the expense of memory usage. The default
+ * value is 15 if deflateInit is used instead.
+ *
+ * For the current implementation of deflate(), a windowBits value of 8
+ * (a window size of 256 bytes) is not supported. As a result, a request
+ * for 8 will result in 9 (a 512-byte window). In that case, providing 8
+ * to inflateInit2() will result in an error when the zlib header with 9
+ * is checked against the initialization of inflate(). The remedy is to
+ * not use 8 with deflateInit2() with this initialization, or at least
+ * in that case use 9 with inflateInit2().
+ *
+ * windowBits can also be -8..-15 for raw deflate. In this case,
+ * -windowBits determines the window size. deflate() will then generate
+ * raw deflate data with no zlib header or trailer, and will not compute
+ * a check value.
+ *
+ * windowBits can also be greater than 15 for optional gzip encoding.
+ * Add 16 to windowBits to write a simple gzip header and trailer around
+ * the compressed data instead of a zlib wrapper. The gzip header will
+ * have no file name, no extra data, no comment, no modification time
+ * (set to zero), no header crc, and the operating system will be set to
+ * the appropriate value, if the operating system was determined at
+ * compile time. If a gzip stream is being written, strm->adler is a
+ * CRC-32 instead of an Adler-32.
+ *
+ * For raw deflate or gzip encoding, a request for a 256-byte window is
+ * rejected as invalid, since only the zlib header provides a means of
+ * transmitting the window size to the decompressor.
+ *
+ * The memLevel parameter specifies how much memory should be allocated
+ * for the internal compression state. memLevel=1 uses minimum memory
+ * but is slow and reduces compression ratio; memLevel=9 uses maximum
+ * memory for optimal speed. The default value is 8. See zconf.h for
+ * total memory usage as a function of windowBits and memLevel.
+ *
+ * The strategy parameter is used to tune the compression algorithm. Use
+ * the value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data
+ * produced by a filter (or predictor), Z_HUFFMAN_ONLY to force Huffman
+ * encoding only (no string match), or Z_RLE to limit match distances to
+ * one (run-length encoding). Filtered data consists mostly of small
+ * values with a somewhat random distribution. In this case, the
+ * compression algorithm is tuned to compress them better. The effect of
+ * Z_FILTERED is to force more Huffman coding and less string matching;
+ * it is somewhat intermediate between Z_DEFAULT_STRATEGY and
+ * Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as
+ * Z_HUFFMAN_ONLY, but give better compression for PNG image data. The
+ * strategy parameter only affects the compression ratio but not the
+ * correctness of the compressed output even if it is not set
+ * appropriately. Z_FIXED prevents the use of dynamic Huffman codes,
+ * allowing for a simpler decoder for special applications.
+ *
+ * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory,
+ *     or Z_STREAM_ERROR if any parameter is invalid (such as an invalid
+ *     method). msg is set to null if there is no error message.
+ *     deflateInit2 does not perform any compression: this will be done
+ *     by deflate().
+ */
+int deflateInit2(z_streamp strm, int level, int method, int windowBits,
+                 int memLevel, int strategy);
+
+/**
+ * Initializes the compression dictionary from the given byte sequence
+ * without producing any compressed output. When using the zlib format,
+ * this function must be called immediately after deflateInit,
+ * deflateInit2 or deflateReset, and before any call of deflate. When
+ * doing raw deflate, this function must be called either before any
+ * call of deflate, or immediately after the completion of a deflate
+ * block, i.e. after all input has been consumed and all output has been
+ * delivered when using any of the flush options Z_BLOCK,
+ * Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The compressor and
+ * decompressor must use exactly the same dictionary (see
+ * inflateSetDictionary).
+ *
+ * The dictionary should consist of strings (byte sequences) that are
+ * likely to be encountered later in the data to be compressed, with the
+ * most commonly used strings preferably put towards the end of the
+ * dictionary. Using a dictionary is most useful when the data to be
+ * compressed is short and can be predicted with good accuracy; the data
+ * can then be compressed better than with the default empty dictionary.
+ *
+ * Depending on the size of the compression data structures selected by
+ * deflateInit or deflateInit2, a part of the dictionary may in effect
+ * be discarded, for example if the dictionary is larger than the window
+ * size provided in deflateInit or deflateInit2. Thus the strings most
+ * likely to be useful should be put at the end of the dictionary, not
+ * at the front. In addition, the current implementation of deflate will
+ * use at most the window size minus 262 bytes of the provided
+ * dictionary.
+ *
+ * Upon return of this function, strm->adler is set to the Adler-32
+ * value of the dictionary; the decompressor may later use this value to
+ * determine which dictionary has been used by the compressor. (The
+ * Adler-32 value applies to the whole dictionary even if only a subset
+ * of the dictionary is actually used by the compressor.) If a raw
+ * deflate was requested, then the Adler-32 value is not computed and
+ * strm->adler is not set.
+ *
+ * @return Z_OK if success, or Z_STREAM_ERROR if a parameter is invalid
+ *     (e.g. dictionary being Z_NULL) or the stream state is
+ *     inconsistent (for example if deflate has already been called for
+ *     this stream or if not at a block boundary for raw deflate).
+ *     deflateSetDictionary does not perform any compression: this will
+ *     be done by deflate().
+ */
+int deflateSetDictionary(z_streamp strm, const Bytef *dictionary,
+                         uInt dictLength);
+
+/**
+ * Returns the sliding dictionary being maintained by deflate.  dictLength is
+ * set to the number of bytes in the dictionary, and that many bytes are copied
+ * to dictionary.  dictionary must have enough space, where 32768 bytes is
+ * always enough.  If deflateGetDictionary() is called with dictionary equal to
+ * Z_NULL, then only the dictionary length is returned, and nothing is copied.
+ * Similary, if dictLength is Z_NULL, then it is not set.
+ *
+ * deflateGetDictionary() may return a length less than the window size, even
+ * when more than the window size in input has been provided. It may return up
+ * to 258 bytes less in that case, due to how zlib's implementation of deflate
+ * manages the sliding window and lookahead for matches, where matches can be
+ * up to 258 bytes long. If the application needs the last window-size bytes of
+ * input, then that would need to be saved by the application outside of zlib.
+ *
+ * @return Z_OK on success, or Z_STREAM_ERROR if the stream state is
+ *     inconsistent.
+ */
+int deflateGetDictionary(z_streamp strm, Bytef *dictionary, uInt *dictLength);
+
+/**
+ * Sets destination stream as a complete copy of the source stream.
+ *
+ * This function can be useful when several compression strategies will be
+ * tried, for example when there are several ways of pre-processing the input
+ * data with a filter.  The streams that will be discarded should then be freed
+ * by calling deflateEnd.  Note that deflateCopy duplicates the internal
+ * compression state which can be quite large, so this strategy is slow and can
+ * consume lots of memory.
+ *
+ * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory,
+ *     Z_STREAM_ERROR if the source stream state was inconsistent (such
+ *     as zalloc being Z_NULL). msg is left unchanged in both source and
+ *     destination.
+ */
+int deflateCopy(z_streamp dest, z_streamp source);
+
+/**
+ * This function is equivalent to deflateEnd followed by deflateInit, but
+ * does not free and reallocate the internal compression state.  The stream
+ * will leave the compression level and any other attributes that may have been
+ * set unchanged.
+ *
+ * deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+ * stream state was inconsistent (such as zalloc or state being Z_NULL).
+ */
+int deflateReset(z_streamp strm);
+
+/**
+ * Dynamically update the compression level and compression strategy.  The
+ * interpretation of level and strategy is as in deflateInit2().  This can be
+ * used to switch between compression and straight copy of the input data, or
+ * to switch to a different kind of input data requiring a different strategy.
+ * If the compression approach (which is a function of the level) or the
+ * strategy is changed, and if any input has been consumed in a previous
+ * deflate() call, then the input available so far is compressed with the old
+ * level and strategy using deflate(strm, Z_BLOCK).  There are three approaches
+ * for the compression levels 0, 1..3, and 4..9 respectively.  The new level
+ * and strategy will take effect at the next call of deflate().
+ *
+ * If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does
+ * not have enough output space to complete, then the parameter change will not
+ * take effect.  In this case, deflateParams() can be called again with the
+ * same parameters and more output space to try again.
+ *
+ * In order to assure a change in the parameters on the first try, the
+ * deflate stream should be flushed using deflate() with Z_BLOCK or other flush
+ * request until strm.avail_out is not zero, before calling deflateParams().
+ * Then no more input data should be provided before the deflateParams() call.
+ * If this is done, the old level and strategy will be applied to the data
+ * compressed before deflateParams(), and the new level and strategy will be
+ * applied to the the data compressed after deflateParams().
+ *
+ * deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream
+ * state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if
+ * there was not enough output space to complete the compression of the
+ * available input data before a change in the strategy or approach.  Note that
+ * in the case of a Z_BUF_ERROR, the parameters are not changed.  A return
+ * value of Z_BUF_ERROR is not fatal, in which case deflateParams() can be
+ * retried with more output space.
+ */
+int deflateParams(z_streamp strm, int level, int strategy);
+
+/**
+ * Fine tune deflate's internal compression parameters. This should only
+ * be used by someone who understands the algorithm used by zlib's
+ * deflate for searching for the best matching string, and even then
+ * only by the most fanatic optimizer trying to squeeze out the last
+ * compressed bit for their specific input data. Read the deflate.c
+ * source code for the meaning of the max_lazy, good_length,
+ * nice_length, and max_chain parameters.
+ *
+ * deflateTune() can be called after deflateInit() or deflateInit2(), and
+ * returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
+ */
+int deflateTune(z_streamp strm, int good_length, int max_lazy, int nice_length,
+                int max_chain);
+
+/**
+ * deflateBound() returns an upper bound on the compressed size after
+ * deflation of sourceLen bytes. It must be called after deflateInit()
+ * or deflateInit2(), and after deflateSetHeader(), if used. This would
+ * be used to allocate an output buffer for deflation in a single pass,
+ * and so would be called before deflate(). If that first deflate() call
+ * is provided the sourceLen input bytes, an output buffer allocated to
+ * the size returned by deflateBound(), and the flush value Z_FINISH,
+ * then deflate() is guaranteed to return Z_STREAM_END. Note that it is
+ * possible for the compressed size to be larger than the value returned
+ * by deflateBound() if flush options other than Z_FINISH or Z_NO_FLUSH
+ * are used.
+ */
+uLong deflateBound(z_streamp strm, uLong sourceLen);
+
+/**
+ * deflatePending() returns the number of bytes and bits of output that
+ * have been generated, but not yet provided in the available output.
+ * The bytes not provided would be due to the available output space
+ * having being consumed. The number of bits of output not provided are
+ * between 0 and 7, where they await more bits to join them in order to
+ * fill out a full byte. If pending or bits are Z_NULL, then those
+ * values are not set.
+ *
+ * @return Z_OK if success, or Z_STREAM_ERROR if the source stream state
+ *     was inconsistent.
+ */
+int deflatePending(z_streamp strm, unsigned *pending, int *bits);
+
+/**
+ * deflatePrime() inserts bits in the deflate output stream.  The intent
+ * is that this function is used to start off the deflate output with the bits
+ * leftover from a previous deflate stream when appending to it.  As such, this
+ * function can only be used for raw deflate, and must be used before the first
+ * deflate() call after a deflateInit2() or deflateReset().  bits must be less
+ * than or equal to 16, and that many of the least significant bits of value
+ * will be inserted in the output.
+ *
+ * @return Z_OK if success, Z_BUF_ERROR if there was not enough room in
+ *     the internal buffer to insert the bits, or Z_STREAM_ERROR if the
+ *     source stream state was inconsistent.
+ */
+int deflatePrime(z_streamp strm, int bits, int value);
+
+/**
+ * Provides gzip header information for when a gzip stream is requested
+ * by deflateInit2(). deflateSetHeader() may be called after
+ * deflateInit2() or deflateReset() and before the first call of
+ * deflate(). The text, time, os, extra field, name, and comment
+ * information in the provided gz_header structure are written to the
+ * gzip header (xflag is ignored -- the extra flags are set according to
+ * the compression level). The caller must assure that, if not Z_NULL,
+ * name and comment are terminated with a zero byte, and that if extra
+ * is not Z_NULL, that extra_len bytes are available there. If hcrc is
+ * true, a gzip header crc is included. Note that the current versions
+ * of the command-line version of gzip (up through version 1.3.x) do not
+ * support header crc's, and will report that it is a "multi-part gzip
+ * file" and give up.
+ *
+ * If deflateSetHeader is not used, the default gzip header has text
+ * false, the time set to zero, and os set to 255, with no extra, name,
+ * or comment fields. The gzip header is returned to the default state
+ * by deflateReset().
+ *
+ * deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the
+ * source stream state was inconsistent.
+ */
+int deflateSetHeader(z_streamp strm, gz_headerp head);
+
+/**
+ * This is another version of inflateInit with an extra parameter. The
+ * fields next_in, avail_in, zalloc, zfree and opaque must be
+ * initialized before by the caller.
+ *
+ * The windowBits parameter is the base two logarithm of the maximum
+ * window size (the size of the history buffer). It should be in the
+ * range 8..15 for this version of the library. The default value is 15
+ * if inflateInit is used instead. windowBits must be greater than or
+ * equal to the windowBits value provided to deflateInit2() while
+ * compressing, or it must be equal to 15 if deflateInit2() was not
+ * used. If a compressed stream with a larger window size is given as
+ * input, inflate() will return with the error code Z_DATA_ERROR instead
+ * of trying to allocate a larger window.
+ *
+ * windowBits can also be zero to request that inflate use the window
+ * size in the zlib header of the compressed stream.
+ *
+ * windowBits can also be -8..-15 for raw inflate. In this case,
+ * -windowBits determines the window size. inflate() will then process
+ * raw deflate data, not looking for a zlib or gzip header, not
+ * generating a check value, and not looking for any check values for
+ * comparison at the end of the stream. This is for use with other
+ * formats that use the deflate compressed data format such as zip.
+ * Those formats provide their own check values. If a custom format is
+ * developed using the raw deflate format for compressed data, it is
+ * recommended that a check value such as an Adler-32 or a CRC-32 be
+ * applied to the uncompressed data as is done in the zlib, gzip, and
+ * zip formats. For most applications, the zlib format should be used as
+ * is. Note that comments above on the use in deflateInit2() applies to
+ * the magnitude of windowBits.
+ *
+ * windowBits can also be greater than 15 for optional gzip decoding.
+ * Add 32 to windowBits to enable zlib and gzip decoding with automatic
+ * header detection, or add 16 to decode only the gzip format (the zlib
+ * format will return a Z_DATA_ERROR). If a gzip stream is being
+ * decoded, strm->adler is a CRC-32 instead of an Adler-32. Unlike the
+ * gunzip utility and gzread() (see below), inflate() will not
+ * automatically decode concatenated gzip streams. inflate() will return
+ * Z_STREAM_END at the end of the gzip stream. The state would need to
+ * be reset to continue decoding a subsequent gzip stream.
+ *
+ * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory,
+ *     or Z_STREAM_ERROR if the parameters are invalid, such as a null
+ *     pointer to the structure. msg is set to null if there is no error
+ *     message. inflateInit2 does not perform any decompression apart
+ *     from possibly reading the zlib header if present: actual
+ *     decompression will be done by inflate(). (So next_in and avail_in
+ *     may be modified, but next_out and avail_out are unused and
+ *     unchanged.) The current implementation of inflateInit2() does not
+ *     process any header information -- that is deferred until
+ *     inflate() is called.
+ */
+int inflateInit2(z_streamp strm, int windowBits);
+
+/**
+ * Initializes the decompression dictionary from the given uncompressed
+ * byte sequence. This function must be called immediately after a call
+ * of inflate, if that call returned Z_NEED_DICT. The dictionary chosen
+ * by the compressor can be determined from the Adler-32 value returned
+ * by that call of inflate. The compressor and decompressor must use
+ * exactly the same dictionary (see deflateSetDictionary). For raw
+ * inflate, this function can be called at any time to set the
+ * dictionary. If the provided dictionary is smaller than the window and
+ * there is already data in the window, then the provided dictionary
+ * will amend what's there. The application must insure that the
+ * dictionary that was used for compression is provided.
+ *
+ * @return Z_OK if success, Z_STREAM_ERROR if a parameter is invalid
+ *     (e.g. dictionary being Z_NULL) or the stream state is
+ *     inconsistent, Z_DATA_ERROR if the given dictionary doesn't match
+ *     the expected one (incorrect Adler-32 value). inflateSetDictionary
+ *     does not perform any decompression: this will be done by
+ *     subsequent calls of inflate().
+ */
+int inflateSetDictionary(z_streamp strm, const Bytef *dictionary,
+                         uInt dictLength);
+
+/**
+ * Returns the sliding dictionary being maintained by inflate.  dictLength is
+ * set to the number of bytes in the dictionary, and that many bytes are copied
+ * to dictionary.  dictionary must have enough space, where 32768 bytes is
+ * always enough.  If inflateGetDictionary() is called with dictionary equal to
+ * Z_NULL, then only the dictionary length is returned, and nothing is copied.
+ * Similary, if dictLength is Z_NULL, then it is not set.
+ *
+ * @return Z_OK on success, or Z_STREAM_ERROR if the stream state is
+ *     inconsistent.
+ */
+int inflateGetDictionary(z_streamp strm, Bytef *dictionary, uInt *dictLength);
+
+/**
+ * Skips invalid compressed data until a possible full flush point (see
+ * above for the description of deflate with Z_FULL_FLUSH) can be found,
+ * or until all available input is skipped. No output is provided.
+ *
+ * inflateSync searches for a 00 00 FF FF pattern in the compressed
+ * data. All full flush points have this pattern, but not all
+ * occurrences of this pattern are full flush points.
+ *
+ * @return Z_OK if a possible full flush point has been found,
+ *     Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no
+ *     flush point has been found, or Z_STREAM_ERROR if the stream
+ *     structure was inconsistent. In the success case, the application
+ *     may save the current current value of total_in which indicates
+ *     where valid compressed data was found. In the error case, the
+ *     application may repeatedly call inflateSync, providing more input
+ *     each time, until success or end of the input data.
+ */
+int inflateSync(z_streamp strm);
+
+/**
+ * Sets the destination stream as a complete copy of the source stream.
+ *
+ * This function can be useful when randomly accessing a large stream.
+ * The first pass through the stream can periodically record the inflate
+ * state, allowing restarting inflate at those points when randomly
+ * accessing the stream.
+ *
+ * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory,
+ *     Z_STREAM_ERROR if the source stream state was inconsistent (such
+ *     as zalloc being Z_NULL). msg is left unchanged in both source and
+ *     destination.
+ */
+int inflateCopy(z_streamp dest, z_streamp source);
+
+/**
+ * This function is equivalent to inflateEnd followed by inflateInit,
+ * but does not free and reallocate the internal decompression state.  The
+ * stream will keep attributes that may have been set by inflateInit2.
+ *
+ * @return Z_OK if success, or Z_STREAM_ERROR if the source stream state
+ *     was inconsistent (such as zalloc or state being Z_NULL).
+ */
+int inflateReset(z_streamp strm);
+
+/**
+ * This function is the same as inflateReset, but it also permits changing
+ * the wrap and window size requests.  The windowBits parameter is interpreted
+ * the same as it is for inflateInit2.  If the window size is changed, then the
+ * memory allocated for the window is freed, and the window will be reallocated
+ * by inflate() if needed.
+ *
+ * @return Z_OK if success, or Z_STREAM_ERROR if the source stream state
+ *     was inconsistent (such as zalloc or state being Z_NULL), or if
+ *     the windowBits parameter is invalid.
+ */
+int inflateReset2(z_streamp strm, int windowBits);
+
+/**
+ * This function inserts bits in the inflate input stream.  The intent is
+ * that this function is used to start inflating at a bit position in the
+ * middle of a byte.  The provided bits will be used before any bytes are used
+ * from next_in.  This function should only be used with raw inflate, and
+ * should be used before the first inflate() call after inflateInit2() or
+ * inflateReset().  bits must be less than or equal to 16, and that many of the
+ * least significant bits of value will be inserted in the input.
+ *
+ * If bits is negative, then the input stream bit buffer is emptied.  Then
+ * inflatePrime() can be called again to put bits in the buffer.  This is used
+ * to clear out bits leftover after feeding inflate a block description prior
+ * to feeding inflate codes.
+ *
+ * @return Z_OK if success, or Z_STREAM_ERROR if the source stream state
+ *     was inconsistent.
+ */
+int inflatePrime(z_streamp strm, int bits, int value);
+
+/**
+ * Returns two values, one in the lower 16 bits of the return value, and
+ * the other in the remaining upper bits, obtained by shifting the
+ * return value down 16 bits. If the upper value is -1 and the lower
+ * value is zero, then inflate() is currently decoding information
+ * outside of a block. If the upper value is -1 and the lower value is
+ * non-zero, then inflate is in the middle of a stored block, with the
+ * lower value equaling the number of bytes from the input remaining to
+ * copy. If the upper value is not -1, then it is the number of bits
+ * back from the current bit position in the input of the code (literal
+ * or length/distance pair) currently being processed. In that case the
+ * lower value is the number of bytes already emitted for that code.
+ *
+ * A code is being processed if inflate is waiting for more input to
+ * complete decoding of the code, or if it has completed decoding but is
+ * waiting for more output space to write the literal or match data.
+ *
+ * inflateMark() is used to mark locations in the input data for random
+ * access, which may be at bit positions, and to note those cases where
+ * the output of a code may span boundaries of random access blocks. The
+ * current location in the input stream can be determined from avail_in
+ * and data_type as noted in the description for the Z_BLOCK flush
+ * parameter for inflate.
+ *
+ * @return the value noted above, or -65536 if the provided source
+ *     stream state was inconsistent.
+ */
+long inflateMark(z_streamp strm);
+
+/**
+ * inflateGetHeader() requests that gzip header information be stored in
+ * the provided gz_header structure. inflateGetHeader() may be called
+ * after inflateInit2() or inflateReset(), and before the first call of
+ * inflate(). As inflate() processes the gzip stream, head->done is zero
+ * until the header is completed, at which time head->done is set to
+ * one. If a zlib stream is being decoded, then head->done is set to -1
+ * to indicate that there will be no gzip header information
+ * forthcoming. Note that Z_BLOCK or Z_TREES can be used to force
+ * inflate() to return immediately after header processing is complete
+ * and before any actual data is decompressed.
+ *
+ * The text, time, xflags, and os fields are filled in with the gzip
+ * header contents. hcrc is set to true if there is a header CRC. (The
+ * header CRC was valid if done is set to one.) If extra is not Z_NULL,
+ * then extra_max contains the maximum number of bytes to write to
+ * extra. Once done is true, extra_len contains the actual extra field
+ * length, and extra contains the extra field, or that field truncated
+ * if extra_max is less than extra_len. If name is not Z_NULL, then up
+ * to name_max characters are written there, terminated with a zero
+ * unless the length is greater than name_max. If comment is not Z_NULL,
+ * then up to comm_max characters are written there, terminated with a
+ * zero unless the length is greater than comm_max. When any of extra,
+ * name, or comment are not Z_NULL and the respective field is not
+ * present in the header, then that field is set to Z_NULL to signal its
+ * absence. This allows the use of deflateSetHeader() with the returned
+ * structure to duplicate the header. However if those fields are set to
+ * allocated memory, then the application will need to save those
+ * pointers elsewhere so that they can be eventually freed.
+ *
+ * If inflateGetHeader is not used, then the header information is
+ * simply discarded. The header is always checked for validity,
+ * including the header CRC if present. inflateReset() will reset the
+ * process to discard the header information. The application would need
+ * to call inflateGetHeader() again to retrieve the header from the next
+ * gzip stream.
+ *
+ * @return Z_OK if success, or Z_STREAM_ERROR if the source stream state
+ *     was inconsistent.
+ */
+int inflateGetHeader(z_streamp strm, gz_headerp head);
+
+/**
+ * Initialize internal stream state for decompression using
+ * inflateBack() calls. The fields zalloc, zfree and opaque in strm must
+ * be initialized before the call. If zalloc and zfree are Z_NULL, then
+ * the default library- derived memory allocation routines are used.
+ * windowBits is the base two logarithm of the window size, in the range
+ * 8..15. window is a caller supplied buffer of that size. Except for
+ * special applications where it is assured that deflate was used with
+ * small window sizes, windowBits must be 15 and a 32K byte window must
+ * be supplied to be able to decompress general deflate streams.
+ *
+ * See inflateBack() for the usage of these routines.
+ *
+ * @return Z_OK on success, Z_STREAM_ERROR if any of the parameters are
+ *     invalid, or Z_MEM_ERROR if the internal state could not be
+ *     allocated.
+ */
+int inflateBackInit(z_streamp strm, int windowBits, unsigned char *window);
+
+typedef unsigned (*in_func)(void *, const unsigned char **);
+typedef int (*out_func)(void *, unsigned char *, unsigned);
+
+/**
+ * inflateBack() does a raw inflate with a single call using a call-back
+ * interface for input and output. This is potentially more efficient
+ * than inflate() for file i/o applications, in that it avoids copying
+ * between the output and the sliding window by simply making the window
+ * itself the output buffer. inflate() can be faster on modern CPUs when
+ * used with large buffers. inflateBack() trusts the application to not
+ * change the output buffer passed by the output function, at least
+ * until inflateBack() returns.
+ *
+ * inflateBackInit() must be called first to allocate the internal state
+ * and to initialize the state with the user-provided window buffer.
+ * inflateBack() may then be used multiple times to inflate a complete,
+ * raw deflate stream with each call. inflateBackEnd() is then called to
+ * free the allocated state.
+ *
+ * A raw deflate stream is one with no zlib or gzip header or trailer.
+ * This routine would normally be used in a utility that reads zip or
+ * gzip files and writes out uncompressed files. The utility would
+ * decode the header and process the trailer on its own, hence this
+ * routine expects only the raw deflate stream to decompress. This is
+ * different from the default behavior of inflate(), which expects a
+ * zlib header and trailer around the deflate stream.
+ *
+ * inflateBack() uses two subroutines supplied by the caller that are
+ * then called by inflateBack() for input and output. inflateBack()
+ * calls those routines until it reads a complete deflate stream and
+ * writes out all of the uncompressed data, or until it encounters an
+ * error. The function's parameters and return types are defined above
+ * in the in_func and out_func typedefs. inflateBack() will call
+ * in(in_desc, &buf) which should return the number of bytes of provided
+ * input, and a pointer to that input in buf. If there is no input
+ * available, in() must return zero -- buf is ignored in that case --
+ * and inflateBack() will return a buffer error. inflateBack() will call
+ * out(out_desc, buf, len) to write the uncompressed data buf[0..len-1].
+ * out() should return zero on success, or non-zero on failure. If out()
+ * returns non-zero, inflateBack() will return with an error. Neither
+ * in() nor out() are permitted to change the contents of the window
+ * provided to inflateBackInit(), which is also the buffer that out()
+ * uses to write from. The length written by out() will be at most the
+ * window size. Any non-zero amount of input may be provided by in().
+ *
+ * For convenience, inflateBack() can be provided input on the first
+ * call by setting strm->next_in and strm->avail_in. If that input is
+ * exhausted, then in() will be called. Therefore strm->next_in must be
+ * initialized before calling inflateBack(). If strm->next_in is Z_NULL,
+ * then in() will be called immediately for input. If strm->next_in is
+ * not Z_NULL, then strm->avail_in must also be initialized, and then if
+ * strm->avail_in is not zero, input will initially be taken from
+ * strm->next_in[0 .. strm->avail_in - 1].
+ *
+ * The in_desc and out_desc parameters of inflateBack() is passed as the
+ * first parameter of in() and out() respectively when they are called.
+ * These descriptors can be optionally used to pass any information that
+ * the caller- supplied in() and out() functions need to do their job.
+ *
+ * On return, inflateBack() will set strm->next_in and strm->avail_in to
+ * pass back any unused input that was provided by the last in() call.
+ * The return values of inflateBack() can be Z_STREAM_END on success,
+ * Z_BUF_ERROR if in() or out() returned an error, Z_DATA_ERROR if there
+ * was a format error in the deflate stream (in which case strm->msg is
+ * set to indicate the nature of the error), or Z_STREAM_ERROR if the
+ * stream was not properly initialized. In the case of Z_BUF_ERROR, an
+ * input or output error can be distinguished using strm->next_in which
+ * will be Z_NULL only if in() returned an error. If strm->next_in is
+ * not Z_NULL, then the Z_BUF_ERROR was due to out() returning non-zero.
+ * (in() will always be called before out(), so strm->next_in is assured
+ * to be defined if out() returns non-zero.) Note that inflateBack()
+ * cannot return Z_OK.
+ */
+int inflateBack(z_streamp strm, in_func in, void *in_desc, out_func out,
+                void *out_desc);
+
+/**
+ * All memory allocated by inflateBackInit() is freed.
+ *
+ * @return Z_OK on success, or Z_STREAM_ERROR if the stream state was
+ *     inconsistent.
+ */
+int inflateBackEnd(z_streamp strm);
+
+/*
+ * Return flags indicating compile-time options.
+ *
+ * Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
+ *   1.0: size of uInt
+ *   3.2: size of uLong
+ *   5.4: size of voidpf (pointer)
+ *   7.6: size of off_t
+ *
+ * Compiler, assembler, and debug options:
+ *   8: ZLIB_DEBUG
+ *   9: ASMV or ASMINF -- use ASM code
+ *   10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
+ *   11: 0 (reserved)
+ *
+ * One-time table building (smaller code, but not thread-safe if true):
+ *   12: BUILDFIXED -- build static block decoding tables when needed
+ *   13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed
+ *   14,15: 0 (reserved)
+ *
+ * Library content (indicates missing functionality):
+ *
+ *   16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking
+ *   deflate code when not needed)
+ *
+ *   17: NO_GZIP -- deflate can't write gzip streams, and inflate can't
+ *   detect and decode gzip streams (to avoid linking crc code)
+ *
+ *   18-19: 0 (reserved)
+ *
+ * Operation variations (changes in library functionality):
+ *   20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate
+ *   21: FASTEST -- deflate algorithm with only one, lowest compression level
+ *   22,23: 0 (reserved)
+ *
+ * The sprintf variant used by gzprintf (zero is best):
+ *   24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format
+ *   25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!
+ *   26: 0 = returns value, 1 = void -- 1 means inferred string length returned
+ *
+ * Remainder is:
+ *   27-31: 0 (reserved)
+ */
+uLong zlibCompileFlags(void);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § zlib » utility functions                                  ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+  The following utility functions are implemented on top of the basic
+  stream-oriented functions. To simplify the interface, some default
+  options are assumed (compression level and memory usage, standard
+  memory allocation functions). The source code of these utility
+  functions can be modified if you need special options. */
+
+/**
+ * Compresses source buffer into the destination buffer. sourceLen is
+ * the byte length of the source buffer. Upon entry, destLen is the
+ * total size of the destination buffer, which must be at least the
+ * value returned by compressBound(sourceLen). Upon exit, destLen is the
+ * actual size of the compressed data. compress() is equivalent to
+ * compress2() with a level parameter of Z_DEFAULT_COMPRESSION.
+ *
+ * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory,
+ *     Z_BUF_ERROR if there was not enough room in the output buffer.
+ */
+int compress(Bytef *dest, uLongf *destLen, const Bytef *source,
+             uLong sourceLen);
+
+/**
+ * Compresses source buffer into the destination buffer. The level
+ * parameter has the same meaning as in deflateInit. sourceLen is the
+ * byte length of the source buffer. Upon entry, destLen is the total
+ * size of the destination buffer, which must be at least the value
+ * returned by compressBound(sourceLen). Upon exit, destLen is the
+ * actual size of the compressed data.
+ *
+ * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory,
+ *     Z_BUF_ERROR if there was not enough room in the output buffer,
+ *     Z_STREAM_ERROR if the level parameter is invalid.
+ */
+int compress2(Bytef *dest, uLongf *destLen, const Bytef *source,
+              uLong sourceLen, int level);
+
+/**
+ * Returns an upper bound on the compressed size after compress() or
+ * compress2() on sourceLen bytes. It would be used before a compress()
+ * or compress2() call to allocate the destination buffer.
+ */
+uLong compressBound(uLong sourceLen);
+
+/**
+ * Decompresses the source buffer into the destination buffer.  sourceLen is
+ * the byte length of the source buffer.  Upon entry, destLen is the total size
+ * of the destination buffer, which must be large enough to hold the entire
+ * uncompressed data.  (The size of the uncompressed data must have been saved
+ * previously by the compressor and transmitted to the decompressor by some
+ * mechanism outside the scope of this compression library.) Upon exit, destLen
+ * is the actual size of the uncompressed data.
+ *
+ * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory,
+ *     Z_BUF_ERROR if there was not enough room in the output buffer, or
+ *     Z_DATA_ERROR if the input data was corrupted or incomplete. In
+ *     the case where there is not enough room, uncompress() will fill
+ *     the output buffer with the uncompressed data up to that point.
+ */
+int uncompress(Bytef *dest, uLongf *destLen, const Bytef *source,
+               uLong sourceLen);
+
+/**
+ * Same as uncompress, except that sourceLen is a pointer, where the
+ * length of the source is *sourceLen.  On return, *sourceLen is the number of
+ * source bytes consumed.
+ */
+int uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source,
+                uLong *sourceLen);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § zlib » gzip                                               ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│─╝
+  This library supports reading and writing files in gzip (.gz) format
+  with an interface similar to that of stdio, using the functions that
+  start with "gz". The gzip format is different from the zlib format.
+  gzip is a gzip wrapper, documented in RFC 1952, wrapped around a
+  deflate stream. */
+
+typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */
+
+/**
+ * Opens a gzip (.gz) file for reading or writing.
+ *
+ * The mode parameter is as in fopen ("rb" or "wb") but can also include
+ * a compression level ("wb9") or a strategy: 'f' for filtered data as
+ * in "wb6f", 'h' for Huffman-only compression as in "wb1h", 'R' for
+ * run-length encoding as in "wb1R", or 'F' for fixed code compression
+ * as in "wb9F". (See the description of deflateInit2 for more
+ * information about the strategy parameter.) 'T' will request
+ * transparent writing or appending with no compression and not using
+ * the gzip format.
+ *
+ * "a" can be used instead of "w" to request that the gzip stream that
+ * will be written be appended to the file. "+" will result in an error,
+ * since reading and writing to the same gzip file is not supported. The
+ * addition of "x" when writing will create the file exclusively, which
+ * fails if the file already exists. On systems that support it, the
+ * addition of "e" when reading or writing will set the flag to close
+ * the file on an execve() call.
+ *
+ * These functions, as well as gzip, will read and decode a sequence of
+ * gzip streams in a file. The append function of gzopen() can be used
+ * to create such a file. (Also see gzflush() for another way to do
+ * this.) When appending, gzopen does not test whether the file begins
+ * with a gzip stream, nor does it look for the end of the gzip streams
+ * to begin appending. gzopen will simply append a gzip stream to the
+ * existing file.
+ *
+ * gzopen can be used to read a file which is not in gzip format; in
+ * this case gzread will directly read from the file without
+ * decompression. When reading, this will be detected automatically by
+ * looking for the magic two- byte gzip header.
+ *
+ * @return Z_OK if the file could not be opened, if there was insufficient
+ *     memory to allocate the gzFile state, or if an invalid mode was
+ *     specified (an 'r', 'w', or 'a' was not provided, or '+' was
+ *     provided). errno can be checked to determine if the reason gzopen
+ *     failed was that the file could not be opened.
+ */
+gzFile gzopen(const char *path, const char *mode);
+
+/**
+ * Associates gzFile with the file descriptor.
+ *
+ * File descriptors are obtained from calls like open, dup, creat, pipe
+ * or fileno (if the file has been previously opened with fopen). The
+ * mode parameter is as in gzopen.
+ *
+ * The next call of gzclose on the returned gzFile will also close the file
+ * descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
+ * fd.  If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd,
+ * mode);.  The duplicated descriptor should be saved to avoid a leak, since
+ * gzdopen does not close fd if it fails.  If you are using fileno() to get the
+ * file descriptor from a FILE *, then you will have to use dup() to avoid
+ * double-close()ing the file descriptor.  Both gzclose() and fclose() will
+ * close the associated file descriptor, so they need to have different file
+ * descriptors.
+ *
+ * @return Z_OK if there was insufficient memory to allocate the gzFile
+ *     state, if an invalid mode was specified (an 'r', 'w', or 'a' was
+ *     not provided, or '+' was provided), or if fd is -1. The file
+ *     descriptor is not used until the next gz* read, write, seek, or
+ *     close operation, so gzdopen will not detect if fd is invalid
+ *     (unless fd is -1).
+ */
+gzFile gzdopen(int fd, const char *mode);
+
+/**
+ * Sets internal buffer size used by this library's functions. The
+ * default buffer size is 8192 bytes. This function must be called after
+ * gzopen() or gzdopen(), and before any other calls that read or write
+ * the file. The buffer memory allocation is always deferred to the
+ * first read or write. Three times that size in buffer space is
+ * allocated. A larger buffer size of, for example, 64K or 128K bytes
+ * will noticeably increase the speed of decompression (reading).
+ *
+ * The new buffer size also affects the maximum length for gzprintf().
+ *
+ * @return Z_OK on success, or -1 on failure, such as being called too
+ *     late.
+ */
+int gzbuffer(gzFile file, unsigned size);
+
+/**
+ * Dynamically update the compression level or strategy.  See the description
+ * of deflateInit2 for the meaning of these parameters.  Previously provided
+ * data is flushed before the parameter change.
+ *
+ * @return Z_OK if success, Z_STREAM_ERROR if the file was not opened for
+ *     writing, Z_ERRNO if there is an error writing the flushed data,
+ *     or Z_MEM_ERROR if there is a memory allocation error.
+ */
+int gzsetparams(gzFile file, int level, int strategy);
+
+/**
+ * Reads given number of uncompressed bytes from the compressed file. If
+ * the input file is not in gzip format, gzread copies the given number
+ * of bytes into the buffer directly from the file.
+ *
+ * After reaching the end of a gzip stream in the input, gzread will continue
+ * to read, looking for another gzip stream.  Any number of gzip streams may be
+ * concatenated in the input file, and will all be decompressed by gzread().
+ * If something other than a gzip stream is encountered after a gzip stream,
+ * that remaining trailing garbage is ignored (and no error is returned).
+ *
+ * gzread can be used to read a gzip file that is being concurrently written.
+ * Upon reaching the end of the input, gzread will return with the available
+ * data.  If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then
+ * gzclearerr can be used to clear the end of file indicator in order to permit
+ * gzread to be tried again.  Z_OK indicates that a gzip stream was completed
+ * on the last gzread.  Z_BUF_ERROR indicates that the input file ended in the
+ * middle of a gzip stream.  Note that gzread does not return -1 in the event
+ * of an incomplete gzip stream.  This error is deferred until gzclose(), which
+ * will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip
+ * stream.  Alternatively, gzerror can be used before gzclose to detect this
+ * case.
+ *
+ * @return Z_OK number of uncompressed bytes actually read, less than
+ *     len for end of file, or -1 for error. If len is too large to fit
+ *     in an int, then nothing is read, -1 is returned, and the error
+ *     state is set to Z_STREAM_ERROR.
+ */
+int gzread(gzFile file, voidp buf, unsigned len);
+
+/**
+ * Read up to nitems items of size size from file to buf, otherwise operating
+ * as gzread() does.  This duplicates the interface of stdio's fread(), with
+ * size_t request and return types.  If the library defines size_t, then
+ * size_t is identical to size_t.  If not, then size_t is an unsigned
+ * integer type that can contain a pointer.
+ *
+ * gzfread() returns the number of full items read of size size, or zero if
+ * the end of the file was reached and a full item could not be read, or if
+ * there was an error.  gzerror() must be consulted if zero is returned in
+ * order to determine if there was an error.  If the multiplication of size and
+ * nitems overflows, i.e. the product does not fit in a size_t, then nothing
+ * is read, zero is returned, and the error state is set to Z_STREAM_ERROR.
+ *
+ * In the event that the end of file is reached and only a partial item is
+ * available at the end, i.e. the remaining uncompressed data length is not a
+ * multiple of size, then the final partial item is nevetheless read into buf
+ * and the end-of-file flag is set.  The length of the partial item read is not
+ * provided, but could be inferred from the result of gztell().  This behavior
+ * is the same as the behavior of fread() implementations in common libraries,
+ * but it prevents the direct use of gzfread() to read a concurrently written
+ * file, reseting and retrying on end-of-file, when size is not 1.
+ */
+size_t gzfread(voidp buf, size_t size, size_t nitems, gzFile file);
+
+/**
+ * Writes given number of uncompressed bytes into the compressed file.
+ * gzwrite returns the number of uncompressed bytes written or 0 in case
+ * of error.
+ */
+int gzwrite(gzFile file, voidpc buf, unsigned len);
+
+/**
+ * Writes nitems items of size size from buf to file, duplicating the
+ * interface of stdio's fwrite(), with size_t request and return types.
+ * If the library defines size_t, then size_t is identical to size_t. If
+ * not, then size_t is an unsigned integer type that can contain a
+ * pointer.
+ *
+ * gzfwrite() returns the number of full items written of size size, or zero
+ * if there was an error.  If the multiplication of size and nitems overflows,
+ * i.e. the product does not fit in a size_t, then nothing is written, zero
+ * is returned, and the error state is set to Z_STREAM_ERROR.
+ */
+size_t gzfwrite(voidpc buf, size_t size, size_t nitems, gzFile file);
+
+/**
+ * Converts, formats, and writes the arguments to the compressed file
+ * under control of the format string, as in fprintf. gzprintf returns
+ * the number of uncompressed bytes actually written, or a negative zlib
+ * error code in case of error. The number of uncompressed bytes written
+ * is limited to 8191, or one less than the buffer size given to
+ * gzbuffer(). The caller should assure that this limit is not exceeded.
+ * If it is exceeded, then gzprintf() will return an error (0) with
+ * nothing written. In this case, there may also be a buffer overflow
+ * with unpredictable consequences, which is possible only if zlib was
+ * compiled with the insecure functions sprintf() or vsprintf() because
+ * the secure snprintf() or vsnprintf() functions were not available.
+ * This can be determined using zlibCompileFlags().
+ */
+int gzprintf(gzFile file, const char *format, ...);
+
+/**
+ * Writes the given null-terminated string to the compressed file, excluding
+ * the terminating null character.
+ *
+ * @return Z_OK number of characters written, or -1 in case of error.
+ */
+int gzputs(gzFile file, const char *s);
+
+/**
+ * Reads bytes from the compressed file until len-1 characters are read,
+ * or a newline character is read and transferred to buf, or an
+ * end-of-file condition is encountered. If any characters are read or
+ * if len == 1, the string is terminated with a null character. If no
+ * characters are read due to an end-of-file or len < 1, then the buffer
+ * is left untouched.
+ *
+ * @return buf which is a null-terminated string, or it returns NULL for
+ *     end-of-file or in case of error. If there was an error, the
+ *     contents at buf are indeterminate.
+ */
+char *gzgets(gzFile file, char *buf, int len);
+
+/**
+ * Writes character converted to an unsigned char into compressed file.
+ * @return value that was written, or -1 on error
+ */
+int gzputc(gzFile file, int c);
+
+/**
+ * Reads one byte from the compressed file. gzgetc returns this byte or
+ * -1 in case of end of file or error. This is implemented as a macro
+ * for speed. As such, it does not do all of the checking the other
+ * functions do. I.e. it does not check to see if file is NULL, nor
+ * whether the structure file points to has been clobbered or not.
+ */
+int gzgetc(gzFile file);
+
+/**
+ * Pushes one character back onto the stream to be read as the first
+ * character on the next read. At least one character of push-back is
+ * allowed. gzungetc() returns the character pushed, or -1 on failure.
+ * gzungetc() will fail if c is -1, and may fail if a character has been
+ * pushed but not read yet. If gzungetc is used immediately after gzopen
+ * or gzdopen, at least the output buffer size of pushed characters is
+ * allowed. (See gzbuffer above.) The pushed character will be discarded
+ * if the stream is repositioned with gzseek() or gzrewind().
+ */
+int gzungetc(int c, gzFile file);
+
+/**
+ * Flushes all pending output into the compressed file. The parameter
+ * flush is as in the deflate() function. The return value is the zlib
+ * error number (see function gzerror below). gzflush is only permitted
+ * when writing.
+ *
+ * If the flush parameter is Z_FINISH, the remaining data is written and
+ * the gzip stream is completed in the output. If gzwrite() is called
+ * again, a new gzip stream will be started in the output. gzread() is
+ * able to read such concatenated gzip streams.
+ *
+ * gzflush should be called only when strictly necessary because it will
+ * degrade compression if called too often.
+ */
+int gzflush(gzFile file, int flush);
+
+/**
+ * Sets starting position for the next gzread or gzwrite on the given
+ * compressed file. The offset represents a number of bytes in the
+ * uncompressed data stream. The whence parameter is defined as in
+ * lseek(2); the value SEEK_END is not supported.
+ *
+ * If the file is opened for reading, this function is emulated but can be
+ * extremely slow.  If the file is opened for writing, only forward seeks are
+ * supported; gzseek then compresses a sequence of zeroes up to the new
+ * starting position.
+ *
+ * @return resulting offset location as measured in bytes from the
+ *     beginning of the uncompressed stream, or -1 in case of error, in
+ *     particular if the file is opened for writing and the new starting
+ *     position would be before the current position.
+ */
+ssize_t gzseek(gzFile file, int64_t offset, int whence);
+
+/**
+ * Rewinds file.
+ *
+ * This function is supported only for reading.
+ *
+ * @note gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
+ */
+int gzrewind(gzFile file);
+
+/**
+ * Returns starting position for the next gzread or gzwrite on the given
+ * compressed file. This position represents a number of bytes in the
+ * uncompressed data stream, and is zero when starting, even if
+ * appending or reading a gzip stream from the middle of a file using
+ * gzdopen().
+ *
+ * @note gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
+ */
+ssize_t gztell(gzFile file);
+
+/**
+ * Returns current offset in the file being read or written. This offset
+ * includes the count of bytes that precede the gzip stream, for example
+ * when appending or when using gzdopen() for reading. When reading, the
+ * offset does not include as yet unused buffered input. This
+ * information can be used for a progress indicator. On error,
+ * gzoffset() returns -1.
+ */
+ssize_t gzoffset(gzFile file);
+
+/**
+ * Returns true (1) if the end-of-file indicator has been set while
+ * reading, false (0) otherwise. Note that the end-of-file indicator is
+ * set only if the read tried to go past the end of the input, but came
+ * up short. Therefore, just like feof(), gzeof() may return false even
+ * if there is no more data to read, in the event that the last read
+ * request was for the exact number of bytes remaining in the input
+ * file. This will happen if the input file size is an exact multiple of
+ * the buffer size.
+ *
+ * If gzeof() returns true, then the read functions will return no more
+ * data, unless the end-of-file indicator is reset by gzclearerr() and
+ * the input file has grown since the previous end of file was detected.
+ */
+int gzeof(gzFile file);
+
+/**
+ * Returns true (1) if file is being copied directly while reading, or
+ * false (0) if file is a gzip stream being decompressed.
+ *
+ * If the input file is empty, gzdirect() will return true, since the
+ * input does not contain a gzip stream.
+ *
+ * If gzdirect() is used immediately after gzopen() or gzdopen() it will
+ * cause buffers to be allocated to allow reading the file to determine
+ * if it is a gzip file. Therefore if gzbuffer() is used, it should be
+ * called before gzdirect().
+ *
+ * When writing, gzdirect() returns true (1) if transparent writing was
+ * requested ("wT" for the gzopen() mode), or false (0) otherwise.
+ * (Note: gzdirect() is not needed when writing. Transparent writing
+ * must be explicitly requested, so the application already knows the
+ * answer. When linking statically, using gzdirect() will include all of
+ * the zlib code for gzip file reading and decompression, which may not
+ * be desired.)
+ */
+int gzdirect(gzFile file);
+
+/**
+ * Flushes all pending output if necessary, closes the compressed file
+ * and deallocates the (de)compression state. Note that once file is
+ * closed, you cannot call gzerror with file, since its structures have
+ * been deallocated. gzclose must not be called more than once on the
+ * same file, just as free must not be called more than once on the same
+ * allocation.
+ *
+ * @return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a file
+ *     operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the
+ *     last read ended in the middle of a gzip stream, or Z_OK on
+ *     success.
+ */
+int gzclose(gzFile file);
+
+/**
+ * Same as gzclose(), but gzclose_r() is only for use when reading, and
+ * gzclose_w() is only for use when writing or appending. The advantage
+ * to using these instead of gzclose() is that they avoid linking in
+ * zlib compression or decompression code that is not used when only
+ * reading or only writing respectively. If gzclose() is used, then both
+ * compression and decompression code will be included the application
+ * when linking to a static zlib library.
+ */
+int gzclose_r(gzFile file);
+int gzclose_w(gzFile file);
+
+/**
+ * Returns the error message for the last error which occurred on the given
+ * compressed file.  errnum is set to zlib error number.  If an error occurred
+ * in the file system and not in the compression library, errnum is set to
+ * Z_ERRNO and the application may consult errno to get the exact error code.
+ *
+ * The application must not modify the returned string.  Future calls to
+ * this function may invalidate the previously returned string.  If file is
+ * closed, then the string previously returned by gzerror will no longer be
+ * available.
+ *
+ * gzerror() should be used to distinguish errors from end-of-file for those
+ * functions above that do not distinguish those cases in their return values.
+ */
+const char *gzerror(gzFile file, int *errnum);
+
+/**
+ * Clears the error and end-of-file flags for file.  This is analogous to the
+ * clearerr() function in stdio.  This is useful for continuing to read a gzip
+ * file that is being written concurrently.
+ */
+void gzclearerr(gzFile file);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § zlib » checksums                                          ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+/**
+ * Updates running Adler-32 checksum with the bytes buf[0..len-1] and
+ * return the updated checksum. If buf is Z_NULL, this function returns
+ * the required initial value for the checksum.
+ */
+uLong adler32(uLong adler, const Bytef *buf, uInt len);
+
+/**
+ * Same as adler32(), but with a size_t length.
+ */
+uLong adler32_z(uLong adler, const Bytef *buf, size_t len);
+
+/**
+ * Combine two Adler-32 checksums into one. For two sequences of bytes,
+ * seq1 and seq2 with lengths len1 and len2, Adler-32 checksums were
+ * calculated for each, adler1 and adler2. adler32_combine() returns the
+ * Adler-32 checksum of seq1 and seq2 concatenated, requiring only
+ * adler1, adler2, and len2. Note that the off_t type (like off_t) is a
+ * signed integer. If len2 is negative, the result has no meaning or
+ * utility.
+ */
+uLong adler32_combine(uLong adler1, uLong adler2, int64_t len2);
+
+/**
+ * Update a running CRC-32 with the bytes buf[0..len-1] and return the
+ * updated CRC-32.  If buf is Z_NULL, this function returns the required
+ * initial value for the crc.  Pre- and post-conditioning (one's complement) is
+ * performed within this function so it shouldn't be done by the application.
+ *
+ * Usage example:
+ *
+ *     uLong crc = crc32(0L, Z_NULL, 0);
+ *     while (read_buffer(buffer, length) != EOF) {
+ *       crc = crc32(crc, buffer, length);
+ *     }
+ *     if (crc != original_crc) error();
+ */
+uLong crc32(uLong crc, const Bytef *buf, uInt len);
+
+/**
+ * Combine two CRC-32 check values into one. For two sequences of bytes,
+ * seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
+ * calculated for each, crc1 and crc2. crc32_combine() returns the
+ * CRC-32 check value of seq1 and seq2 concatenated, requiring only
+ * crc1, crc2, and len2.
+ */
+uLong crc32_combine(uLong crc1, uLong crc2, int64_t len2);
+
+/**
+ * gzgetc() macro and its supporting function and exposed data
+ * structure. Note that the real internal state is much larger than the
+ * exposed structure. This abbreviated structure exposes just enough for
+ * the gzgetc() macro. The user should not mess with these exposed
+ * elements, since their names or behavior could change in the future,
+ * perhaps even capriciously. They can only be used by the gzgetc()
+ * macro. You have been warned.
+ */
+struct gzFile_s {
+  unsigned have;
+  unsigned char *next;
+  int64_t pos;
+};
+
+int gzgetc_(gzFile file); /* backward compatibility */
+#ifdef Z_PREFIX_SET
+#undef z_gzgetc
+#define z_gzgetc(g) \
+  ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g))
+#elif defined(Z_CR_PREFIX_SET)
+#undef gzgetc
+#define gzgetc(g) \
+  ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (Cr_z_gzgetc)(g))
+#else
+#define gzgetc(g) \
+  ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g))
+#endif
+
+/* undocumented functions */
+const char *zError(int);
+int inflateSyncPoint(z_streamp);
+int inflateUndermine(z_streamp, int);
+int inflateValidate(z_streamp, int);
+unsigned long inflateCodesUsed(z_streamp);
+int inflateResetKeep(z_streamp);
+int deflateResetKeep(z_streamp);
+int gzvprintf(gzFile file, const char *format, va_list va);
+void inflate_fast_chunk(z_streamp strm, unsigned start);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+
+/*!BEGIN third_party/regex/regex.h */
+
+#define COSMOPOLITAN_LIBC_REGEX_REGEX_H_
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+#if 0
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § regular expressions                                       ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+#endif
+
+#define REG_EXTENDED 1
+#define REG_ICASE    2
+#define REG_NEWLINE  4
+#define REG_NOSUB    8
+
+#define REG_NOTBOL 1
+#define REG_NOTEOL 2
+
+#define REG_OK       0
+#define REG_NOMATCH  1
+#define REG_BADPAT   2
+#define REG_ECOLLATE 3
+#define REG_ECTYPE   4
+#define REG_EESCAPE  5
+#define REG_ESUBREG  6
+#define REG_EBRACK   7
+#define REG_EPAREN   8
+#define REG_EBRACE   9
+#define REG_BADBR    10
+#define REG_ERANGE   11
+#define REG_ESPACE   12
+#define REG_BADRPT   13
+
+#define REG_ENOSYS -1
+
+typedef long regoff_t;
+
+struct Regex {
+  size_t re_nsub;
+  void *__opaque, *__padding[4];
+  size_t __nsub2;
+  char __padding2;
+};
+
+struct RegexMatch {
+  regoff_t rm_so;
+  regoff_t rm_eo;
+};
+
+typedef struct Regex regex_t;
+typedef struct RegexMatch regmatch_t;
+
+int regcomp(regex_t *, const char *, int);
+int regexec(const regex_t *, const char *, size_t, regmatch_t *, int);
+size_t regerror(int, const regex_t *, char *, size_t);
+void regfree(regex_t *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#endif /* COSMOPOLITAN_H_ */
diff --git a/ape/crt.o b/ape/crt.o
new file mode 100644
index 0000000..baac214
--- /dev/null
+++ b/ape/crt.o
Binary files differdiff --git a/cat.c b/cat.c
new file mode 100644
index 0000000..92a19b7
--- /dev/null
+++ b/cat.c
@@ -0,0 +1,34 @@
+#include "stdio/stdio.h"
+
+int cat(char* filename) {
+  FILE *f;
+  f = fopen(filename, "r");
+  if (f == NULL) {
+    printf("Cannot open file '%s'\n", filename);
+    return 1;
+  }
+
+  char *line = NULL;
+  size_t linecap = 0;
+  ssize_t linelen;
+  while ((linelen = getline(&line, &linecap, f)) != -1) {
+    printf("%s", line);
+  }
+  free(line);
+  fclose(f);
+  return 0;
+}
+
+int main(int argc, char *argv[]) {
+  int err = 0;
+
+  if (argc > 1) {
+    for (int i = 1; i < argc; i++) {
+      cat(argv[i]);
+    }
+  } else {
+    printf("Usage: cat FILE [FILE] ...\n");
+  }
+
+  return 0;
+}
diff --git a/stdio/clearerr.c b/stdio/clearerr.c
new file mode 100644
index 0000000..db30cda
--- /dev/null
+++ b/stdio/clearerr.c
@@ -0,0 +1,23 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+void clearerr(FILE *f) {
+  f->state = 0;
+}
diff --git a/stdio/dirstream.c b/stdio/dirstream.c
new file mode 100644
index 0000000..77940a0
--- /dev/null
+++ b/stdio/dirstream.c
@@ -0,0 +1,321 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/bits/bits.h"
+#include "libc/calls/internal.h"
+#include "libc/calls/struct/dirent.h"
+#include "libc/dce.h"
+#include "libc/macros.internal.h"
+#include "libc/mem/mem.h"
+#include "libc/nt/enum/fileflagandattributes.h"
+#include "libc/nt/enum/filetype.h"
+#include "libc/nt/files.h"
+#include "libc/nt/runtime.h"
+#include "libc/nt/struct/win32finddata.h"
+#include "libc/str/str.h"
+#include "libc/sysv/consts/dt.h"
+#include "libc/sysv/consts/o.h"
+#include "libc/sysv/errfuns.h"
+
+/**
+ * @fileoverview Directory Streams for Linux+Mac+Windows+FreeBSD+OpenBSD.
+ *
+ * System interfaces for listing the contents of file system directories
+ * are famously incompatible across platforms. Most native projects that
+ * have been around a long time implement wrappers for this. Normally it
+ * will only be for DOS or Windows support. So this is the first time it
+ * has been done for five platforms, having a remarkably tiny footprint.
+ */
+
+/**
+ * Directory stream object.
+ */
+struct dirstream {
+  int64_t fd;
+  int64_t tell;
+  struct dirent ent;
+  union {
+    struct {
+      unsigned buf_pos;
+      unsigned buf_end;
+      char buf[BUFSIZ];
+    };
+    struct {
+      bool isdone;
+      struct NtWin32FindData windata;
+    };
+  };
+};
+
+/**
+ * FreeBSD getdents() and XNU getdirentries() ABI.
+ */
+struct dirent_bsd {
+  uint32_t d_fileno;
+  uint16_t d_reclen;
+  uint8_t d_type;
+  uint8_t d_namlen;
+  char d_name[256];
+};
+
+/**
+ * OpenBSD getdents() ABI.
+ */
+struct dirent_openbsd {
+  uint64_t d_fileno;
+  int64_t d_off;
+  uint16_t d_reclen;
+  uint8_t d_type;
+  uint8_t d_namlen;
+  uint8_t __zomg[4];
+  char d_name[256];
+};
+
+/**
+ * NetBSD getdents().
+ */
+struct dirent_netbsd {
+  uint64_t d_fileno;
+  uint16_t d_reclen;
+  uint16_t d_namlen;
+  uint8_t d_type;
+  char d_name[512];
+};
+
+static textwindows DIR *opendir_nt_impl(char16_t name[PATH_MAX], size_t len) {
+  DIR *res;
+  if (len + 2 + 1 <= PATH_MAX) {
+    if (name[len - 1] != u'\\') name[len++] = u'\\';
+    name[len++] = u'*';
+    name[len] = u'\0';
+    if ((res = calloc(1, sizeof(DIR)))) {
+      if ((res->fd = FindFirstFile(name, &res->windata)) != -1) {
+        return res;
+      } else {
+        __winerr();
+      }
+      free(res);
+    }
+  } else {
+    enametoolong();
+  }
+  return NULL;
+}
+
+static textwindows noinline DIR *opendir_nt(const char *path) {
+  int len;
+  char16_t name[PATH_MAX];
+  if ((len = __mkntpath(path, name)) == -1) return NULL;
+  return opendir_nt_impl(name, len);
+}
+
+static textwindows noinline DIR *fdopendir_nt(int fd) {
+  DIR *res;
+  char16_t name[PATH_MAX];
+  if (__isfdkind(fd, kFdFile)) {
+    if ((res = opendir_nt_impl(
+             name, GetFinalPathNameByHandle(
+                       g_fds.p[fd].handle, name, ARRAYLEN(name),
+                       kNtFileNameNormalized | kNtVolumeNameDos)))) {
+      close(fd);
+      return res;
+    }
+  } else {
+    ebadf();
+  }
+  return NULL;
+}
+
+static textwindows noinline struct dirent *readdir_nt(DIR *dir) {
+  if (!dir->isdone) {
+    memset(&dir->ent, 0, sizeof(dir->ent));
+    dir->ent.d_ino = 0;
+    dir->ent.d_off = dir->tell++;
+    dir->ent.d_reclen = sizeof(dir->ent) +
+                        tprecode16to8(dir->ent.d_name, sizeof(dir->ent.d_name),
+                                      dir->windata.cFileName)
+                            .ax +
+                        1;
+    switch (dir->windata.dwFileType) {
+      case kNtFileTypeDisk:
+        dir->ent.d_type = DT_BLK;
+        break;
+      case kNtFileTypeChar:
+        dir->ent.d_type = DT_CHR;
+        break;
+      case kNtFileTypePipe:
+        dir->ent.d_type = DT_FIFO;
+        break;
+      default:
+        if (dir->windata.dwFileAttributes & kNtFileAttributeDirectory) {
+          dir->ent.d_type = DT_DIR;
+        } else {
+          dir->ent.d_type = DT_REG;
+        }
+        break;
+    }
+    dir->isdone = !FindNextFile(dir->fd, &dir->windata);
+    return &dir->ent;
+  } else {
+    return NULL;
+  }
+}
+
+/**
+ * Opens directory, e.g.
+ *
+ *     DIR *d;
+ *     struct dirent *e;
+ *     CHECK((d = opendir(path)));
+ *     while ((e = readdir(d))) {
+ *       printf("%s/%s\n", path, e->d_name);
+ *     }
+ *     LOGIFNEG1(closedir(d));
+ *
+ * @returns newly allocated DIR object, or NULL w/ errno
+ * @errors ENOENT, ENOTDIR, EACCES, EMFILE, ENFILE, ENOMEM
+ * @see glob()
+ */
+DIR *opendir(const char *name) {
+  int fd;
+  DIR *res;
+  if (!IsWindows()) {
+    res = NULL;
+    if ((fd = open(name, O_RDONLY | O_DIRECTORY | O_CLOEXEC)) != -1) {
+      if (!(res = fdopendir(fd))) close(fd);
+    }
+    return res;
+  } else {
+    return opendir_nt(name);
+  }
+}
+
+/**
+ * Creates directory object for file descriptor.
+ *
+ * @param fd gets owned by this function, if it succeeds
+ * @return new directory object, which must be freed by closedir(),
+ *     or NULL w/ errno
+ * @errors ENOMEM and fd is closed
+ */
+DIR *fdopendir(int fd) {
+  DIR *dir;
+  if (!IsWindows()) {
+    if (!(dir = calloc(1, sizeof(*dir)))) return NULL;
+    dir->fd = fd;
+    return dir;
+  } else {
+    return fdopendir_nt(fd);
+  }
+}
+
+/**
+ * Reads next entry from directory stream.
+ *
+ * This API doesn't define any particular ordering.
+ *
+ * @param dir is the object opendir() or fdopendir() returned
+ * @return next entry or NULL on end or error, which can be
+ *     differentiated by setting errno to 0 beforehand
+ */
+struct dirent *readdir(DIR *dir) {
+  int rc;
+  long basep;
+  struct dirent *ent;
+  struct dirent_bsd *bsd;
+  struct dirent_netbsd *nbsd;
+  struct dirent_openbsd *obsd;
+  if (!IsWindows()) {
+    if (dir->buf_pos >= dir->buf_end) {
+      basep = dir->tell; /* TODO(jart): what does xnu do */
+      rc = getdents(dir->fd, dir->buf, sizeof(dir->buf) - 256, &basep);
+      if (!rc || rc == -1) return NULL;
+      dir->buf_pos = 0;
+      dir->buf_end = rc;
+    }
+    if (IsLinux()) {
+      ent = (struct dirent *)(dir->buf + dir->buf_pos);
+      dir->buf_pos += ent->d_reclen;
+      dir->tell = ent->d_off;
+    } else if (IsOpenbsd()) {
+      obsd = (struct dirent_openbsd *)(dir->buf + dir->buf_pos);
+      dir->buf_pos += obsd->d_reclen;
+      ent = &dir->ent;
+      ent->d_ino = obsd->d_fileno;
+      ent->d_off = obsd->d_off;
+      ent->d_reclen = obsd->d_reclen;
+      ent->d_type = obsd->d_type;
+      memcpy(ent->d_name, obsd->d_name, obsd->d_namlen + 1);
+    } else if (IsNetbsd()) {
+      nbsd = (struct dirent_netbsd *)(dir->buf + dir->buf_pos);
+      dir->buf_pos += nbsd->d_reclen;
+      ent = &dir->ent;
+      ent->d_ino = nbsd->d_fileno;
+      ent->d_off = dir->tell++;
+      ent->d_reclen = nbsd->d_reclen;
+      ent->d_type = nbsd->d_type;
+      memcpy(ent->d_name, nbsd->d_name, MAX(256, nbsd->d_namlen + 1));
+    } else {
+      bsd = (struct dirent_bsd *)(dir->buf + dir->buf_pos);
+      dir->buf_pos += bsd->d_reclen;
+      ent = &dir->ent;
+      ent->d_ino = bsd->d_fileno;
+      ent->d_off = IsXnu() ? (dir->tell = basep) : dir->tell++;
+      ent->d_reclen = bsd->d_reclen;
+      ent->d_type = bsd->d_type;
+      memcpy(ent->d_name, bsd->d_name, bsd->d_namlen + 1);
+    }
+    return ent;
+  } else {
+    return readdir_nt(dir);
+  }
+}
+
+/**
+ * Closes directory object returned by opendir().
+ * @return 0 on success or -1 w/ errno
+ */
+int closedir(DIR *dir) {
+  int rc;
+  if (dir) {
+    if (!IsWindows()) {
+      rc = close(dir->fd);
+    } else {
+      rc = FindClose(dir->fd) ? 0 : __winerr();
+    }
+    free(dir);
+  } else {
+    rc = 0;
+  }
+  return rc;
+}
+
+/**
+ * Returns offset into directory data.
+ */
+long telldir(DIR *dir) {
+  return dir->tell;
+}
+
+/**
+ * Returns file descriptor associated with DIR object.
+ */
+int dirfd(DIR *dir) {
+  if (IsWindows()) return eopnotsupp();
+  return dir->fd;
+}
diff --git a/stdio/dtoa.c b/stdio/dtoa.c
new file mode 100644
index 0000000..f58202d
--- /dev/null
+++ b/stdio/dtoa.c
@@ -0,0 +1,25 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/fmt/fmts.h"
+#include "third_party/gdtoa/gdtoa.h"
+
+char *__fmt_dtoa(double d0, int mode, int ndigits, int *decpt, int *sign,
+                 char **rve) {
+  return dtoa(d0, mode, ndigits, decpt, sign, rve);
+}
diff --git a/stdio/fbufsize.c b/stdio/fbufsize.c
new file mode 100644
index 0000000..254276b
--- /dev/null
+++ b/stdio/fbufsize.c
@@ -0,0 +1,27 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/assert.h"
+#include "libc/stdio/stdio_ext.h"
+
+/**
+ * Returns capacity of stdio stream buffer.
+ */
+size_t __fbufsize(FILE *f) {
+  return f->size;
+}
diff --git a/stdio/fclose.c b/stdio/fclose.c
new file mode 100644
index 0000000..cd75a50
--- /dev/null
+++ b/stdio/fclose.c
@@ -0,0 +1,59 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/assert.h"
+#include "libc/calls/calls.h"
+#include "libc/errno.h"
+#include "libc/mem/mem.h"
+#include "libc/runtime/runtime.h"
+#include "libc/stdio/internal.h"
+#include "libc/stdio/stdio.h"
+
+/**
+ * Closes standard i/o stream and its underlying thing.
+ *
+ * @param f is the file object, which is always free if it's heap,
+ *     otherwise its resources are released and fields updated
+ * @return 0 on success or -1 on error, which can be a trick for
+ *     differentiating between EOF and real errors during previous
+ *     i/o calls, without needing to call ferror()
+ * @see fclose_s()
+ */
+int fclose(FILE *f) {
+  int rc;
+  if (!f) return 0;
+  __fflush_unregister(f);
+  fflush(f);
+  if (!f->nofree) {
+    free_s(&f->buf);
+  }
+  f->state = EOF;
+  if (f->noclose) {
+    f->fd = -1;
+  } else if (close_s(&f->fd) == -1) {
+    f->state = errno;
+  }
+  if (f->state == EOF) {
+    rc = 0;
+  } else {
+    errno = f->state;
+    rc = EOF;
+  }
+  free_s(&f);
+  return rc;
+}
diff --git a/stdio/fclose_s.c b/stdio/fclose_s.c
new file mode 100644
index 0000000..7fa0b41
--- /dev/null
+++ b/stdio/fclose_s.c
@@ -0,0 +1,33 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/bits/bits.h"
+#include "libc/stdio/stdio.h"
+
+/**
+ * Closes standard i/o stream and its underlying thing.
+ *
+ * @param f is the heap file object pointer, to close+free+clear
+ * @return 0 on success or -1 on error, which can be a trick for
+ *     differentiating between EOF and real errors during previous
+ *     i/o calls, without needing to call ferror()
+ */
+int fclose_s(FILE **fp) {
+  FILE *f = NULL;
+  return fclose(lockxchg(fp, &f));
+}
diff --git a/stdio/fdopen.c b/stdio/fdopen.c
new file mode 100644
index 0000000..0f786fa
--- /dev/null
+++ b/stdio/fdopen.c
@@ -0,0 +1,50 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/mem/mem.h"
+#include "libc/stdio/internal.h"
+#include "libc/stdio/stdio.h"
+#include "libc/sysv/consts/o.h"
+#include "libc/sysv/errfuns.h"
+
+/**
+ * Allocates stream object for already-opened file descriptor.
+ *
+ * @param fd existing file descriptor or -1 for plain old buffer
+ * @param mode is passed to fopenflags()
+ * @return new stream or NULL w/ errno
+ * @error ENOMEM
+ */
+FILE *fdopen(int fd, const char *mode) {
+  FILE *f;
+  if ((f = calloc(1, sizeof(FILE)))) {
+    f->fd = fd;
+    f->bufmode = ischardev(fd) ? _IOLBF : _IOFBF;
+    f->iomode = fopenflags(mode);
+    f->size = BUFSIZ;
+    if ((f->buf = malloc(f->size))) {
+      if ((f->iomode & O_ACCMODE) != O_RDONLY) {
+        __fflush_register(f);
+      }
+      return f;
+    }
+    free(f);
+  }
+  return NULL;
+}
diff --git a/stdio/feof.c b/stdio/feof.c
new file mode 100644
index 0000000..6016fc8
--- /dev/null
+++ b/stdio/feof.c
@@ -0,0 +1,26 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Returns true if stream is in end-of-file state.
+ */
+int feof(FILE *f) {
+  return f->state == -1;
+}
diff --git a/stdio/ferror.c b/stdio/ferror.c
new file mode 100644
index 0000000..241cb25
--- /dev/null
+++ b/stdio/ferror.c
@@ -0,0 +1,29 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Returns nonzero if stream is in error state.
+ *
+ * @note EOF doesn't count
+ * @see feof()
+ */
+errno_t ferror(FILE *f) {
+  return f->state > 0 ? f->state : 0;
+}
diff --git a/stdio/fflush.c b/stdio/fflush.c
new file mode 100644
index 0000000..99a758d
--- /dev/null
+++ b/stdio/fflush.c
@@ -0,0 +1,91 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/alg/arraylist.internal.h"
+#include "libc/bits/bits.h"
+#include "libc/bits/pushpop.h"
+#include "libc/calls/calls.h"
+#include "libc/errno.h"
+#include "libc/macros.internal.h"
+#include "libc/mem/mem.h"
+#include "libc/runtime/runtime.h"
+#include "libc/stdio/fflush.internal.h"
+#include "libc/stdio/internal.h"
+#include "libc/stdio/stdio.h"
+#include "libc/sysv/consts/o.h"
+
+/**
+ * Blocks until data from stream buffer is written out.
+ *
+ * @param f is the stream handle
+ * @return is 0 on success or -1 on error
+ */
+int fflush(FILE *f) {
+  size_t i;
+  ssize_t rc;
+  if (!f) {
+    for (i = __fflush.handles.i; i; --i) {
+      if ((f = __fflush.handles.p[i - 1])) {
+        if (fflush(f) == -1) return -1;
+      }
+    }
+  } else if (f->fd != -1) {
+    while (f->beg && !f->end && (f->iomode & O_ACCMODE) != O_RDONLY) {
+      if ((rc = write(f->fd, f->buf, f->beg)) == -1) {
+        f->state = errno;
+        return -1;
+      }
+      if (rc != f->beg) abort();
+      f->beg = 0;
+    }
+  } else if (f->beg && f->beg < f->size) {
+    f->buf[f->beg] = 0;
+  }
+  return 0;
+}
+
+textstartup int __fflush_register(FILE *f) {
+  size_t i;
+  struct StdioFlush *sf;
+  sf = &__fflush;
+  if (!sf->handles.p) {
+    sf->handles.p = &sf->handles_initmem[0];
+    pushmov(&sf->handles.n, ARRAYLEN(sf->handles_initmem));
+    __cxa_atexit(fflush, NULL, NULL);
+  }
+  for (i = sf->handles.i; i; --i) {
+    if (!sf->handles.p[i - 1]) {
+      sf->handles.p[i - 1] = f;
+      return 0;
+    }
+  }
+  return append(&sf->handles, &f);
+}
+
+void __fflush_unregister(FILE *f) {
+  size_t i;
+  struct StdioFlush *sf;
+  sf = &__fflush;
+  sf = pushpop(sf);
+  for (i = sf->handles.i; i; --i) {
+    if (sf->handles.p[i - 1] == f) {
+      pushmov(&sf->handles.p[i - 1], NULL);
+      return;
+    }
+  }
+}
diff --git a/stdio/fflush.internal.h b/stdio/fflush.internal.h
new file mode 100644
index 0000000..d49156d
--- /dev/null
+++ b/stdio/fflush.internal.h
@@ -0,0 +1,21 @@
+#ifndef COSMOPOLITAN_LIBC_STDIO_FFLUSH_H_
+#define COSMOPOLITAN_LIBC_STDIO_FFLUSH_H_
+#include "libc/stdio/stdio.h"
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct StdioFlushHandles {
+  size_t i, n;
+  FILE **p;
+};
+
+struct StdioFlush {
+  struct StdioFlushHandles handles;
+  FILE *handles_initmem[8];
+};
+
+extern struct StdioFlush __fflush hidden;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#endif /* COSMOPOLITAN_LIBC_STDIO_FFLUSH_H_ */
diff --git a/stdio/fgetc.c b/stdio/fgetc.c
new file mode 100644
index 0000000..034b967
--- /dev/null
+++ b/stdio/fgetc.c
@@ -0,0 +1,33 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Reads byte from stream.
+ * @return byte in range 0..255, or -1 w/ errno
+ */
+int fgetc(FILE *f) {
+  unsigned char b;
+  if (f->beg < f->end) {
+    return f->buf[f->beg++] & 0xff;
+  } else {
+    if (!fread(&b, 1, 1, f)) return -1;
+    return b;
+  }
+}
diff --git a/stdio/fgetpos.c b/stdio/fgetpos.c
new file mode 100644
index 0000000..cd7d4a3
--- /dev/null
+++ b/stdio/fgetpos.c
@@ -0,0 +1,29 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+int fgetpos(FILE *stream, fpos_t *pos) {
+  long res;
+  if ((res = ftell(stream)) != -1) {
+    *pos = res;
+    return 0;
+  } else {
+    return -1;
+  }
+}
diff --git a/stdio/fgets.c b/stdio/fgets.c
new file mode 100644
index 0000000..195880e
--- /dev/null
+++ b/stdio/fgets.c
@@ -0,0 +1,46 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/assert.h"
+#include "libc/errno.h"
+#include "libc/stdio/stdio.h"
+
+/**
+ * Reads content from stream.
+ *
+ * This function is similar to getline() except it'll truncate lines
+ * exceeding size. The line ending marker is included and may be removed
+ * using chomp().
+ */
+char *fgets(char *s, int size, FILE *f) {
+  int c;
+  char *p;
+  p = s;
+  if (size > 0) {
+    while (--size > 0) {
+      if ((c = getc(f)) == -1) {
+        if (ferror(f) == EINTR) continue;
+        break;
+      }
+      *p++ = c & 0xff;
+      if (c == '\n') break;
+    }
+    *p = '\0';
+  }
+  return p > s ? s : NULL;
+}
diff --git a/stdio/fgetwc.c b/stdio/fgetwc.c
new file mode 100644
index 0000000..6411236
--- /dev/null
+++ b/stdio/fgetwc.c
@@ -0,0 +1,51 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+#include "libc/str/thompike.h"
+#include "libc/str/tpdecodecb.internal.h"
+
+/**
+ * Reads UTF-8 character from stream.
+ * @return wide character or -1 on EOF or error
+ */
+wint_t fgetwc(FILE *f) {
+  int c, n;
+  wint_t b, x, y;
+  if (f->beg < f->end) {
+    b = f->buf[f->beg++] & 0xff;
+  } else if ((c = fgetc(f)) != -1) {
+    b = c;
+  } else {
+    return -1;
+  }
+  if (b < 0300) return b;
+  n = ThomPikeLen(b);
+  x = ThomPikeByte(b);
+  while (--n) {
+    if ((c = fgetc(f)) == -1) return -1;
+    y = c;
+    if (ThomPikeCont(y)) {
+      x = ThomPikeMerge(x, y);
+    } else {
+      ungetc(y, f);
+      return b;
+    }
+  }
+  return x;
+}
diff --git a/stdio/fgetws.c b/stdio/fgetws.c
new file mode 100644
index 0000000..3fdd3b3
--- /dev/null
+++ b/stdio/fgetws.c
@@ -0,0 +1,41 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/assert.h"
+#include "libc/errno.h"
+#include "libc/stdio/stdio.h"
+
+/**
+ * Reads UTF-8 content from stream into UTF-32 buffer.
+ */
+wchar_t *fgetws(wchar_t *s, int size, FILE *f) {
+  wint_t c;
+  wchar_t *p = s;
+  if (size > 0) {
+    while (--size > 0) {
+      if ((c = fgetwc(f)) == -1) {
+        if (ferror(f) == EINTR) continue;
+        break;
+      }
+      *p++ = c;
+      if (c == '\n') break;
+    }
+    *p = '\0';
+  }
+  return (intptr_t)p > (intptr_t)s ? s : NULL;
+}
diff --git a/stdio/fileno.c b/stdio/fileno.c
new file mode 100644
index 0000000..a16d858
--- /dev/null
+++ b/stdio/fileno.c
@@ -0,0 +1,31 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+#include "libc/sysv/errfuns.h"
+
+/**
+ * Returns file descriptor associated with stream.
+ */
+int fileno(FILE *f) {
+  if (f->fd != -1) {
+    return f->fd;
+  } else {
+    return ebadf();
+  }
+}
diff --git a/stdio/flbf.c b/stdio/flbf.c
new file mode 100644
index 0000000..661e09a
--- /dev/null
+++ b/stdio/flbf.c
@@ -0,0 +1,27 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/stdio/stdio_ext.h"
+
+/**
+ * Returns nonzero if stream is line buffered.
+ */
+int __flbf(FILE *f) {
+  return f->bufmode == _IOLBF;
+}
diff --git a/stdio/flockfile.c b/stdio/flockfile.c
new file mode 100644
index 0000000..fd6e8e6
--- /dev/null
+++ b/stdio/flockfile.c
@@ -0,0 +1,38 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Does nothing since Cosmopolitan currently doesn't support threads.
+ */
+void flockfile(FILE *f) {
+}
+
+/**
+ * Does nothing since Cosmopolitan currently doesn't support threads.
+ */
+void funlockfile(FILE *f) {
+}
+
+/**
+ * Does nothing since Cosmopolitan currently doesn't support threads.
+ */
+int ftrylockfile(FILE *f) {
+  return 0;
+}
diff --git a/stdio/flushers.c b/stdio/flushers.c
new file mode 100644
index 0000000..3b7c976
--- /dev/null
+++ b/stdio/flushers.c
@@ -0,0 +1,21 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/fflush.internal.h"
+
+struct StdioFlush __fflush;
diff --git a/stdio/flushlbf.c b/stdio/flushlbf.c
new file mode 100644
index 0000000..a714b25
--- /dev/null
+++ b/stdio/flushlbf.c
@@ -0,0 +1,33 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/stdio/fflush.internal.h"
+#include "libc/stdio/stdio_ext.h"
+
+/**
+ * Flushes all line-buffered streams.
+ */
+void _flushlbf(void) {
+  int i;
+  for (i = 0; i < __fflush.handles.i; ++i) {
+    if (__fflush.handles.p[i]->bufmode == _IOLBF) {
+      fflush(__fflush.handles.p[i]);
+    }
+  }
+}
diff --git a/stdio/fmemopen.c b/stdio/fmemopen.c
new file mode 100644
index 0000000..6aac757
--- /dev/null
+++ b/stdio/fmemopen.c
@@ -0,0 +1,64 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/mem/mem.h"
+#include "libc/stdio/stdio.h"
+#include "libc/str/str.h"
+#include "libc/sysv/consts/o.h"
+#include "libc/sysv/errfuns.h"
+
+/**
+ * Opens buffer as stream.
+ *
+ * @param buf becomes owned by this function, and is allocated if NULL
+ * @return new stream or NULL w/ errno
+ */
+FILE *fmemopen(void *buf, size_t size, const char *mode) {
+  FILE *f;
+  char *p;
+  unsigned flags;
+  if (size && size > 0x7ffff000) {
+    einval();
+    return NULL;
+  }
+  if (!(f = calloc(1, sizeof(FILE)))) {
+    return NULL;
+  }
+  if (buf) {
+    f->nofree = true;
+  } else {
+    if (!size) size = BUFSIZ;
+    if (!(buf = calloc(1, size))) {
+      free(f);
+      return NULL;
+    }
+  }
+  f->fd = -1;
+  f->buf = buf;
+  f->end = size;
+  f->size = size;
+  f->iomode = fopenflags(mode);
+  if (f->iomode & O_APPEND) {
+    if ((p = memchr(buf, '\0', size))) {
+      f->beg = p - (char *)buf;
+    } else {
+      f->beg = f->end;
+    }
+  }
+  return f;
+}
diff --git a/stdio/fopen.c b/stdio/fopen.c
new file mode 100644
index 0000000..a5e0b05
--- /dev/null
+++ b/stdio/fopen.c
@@ -0,0 +1,74 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/mem/mem.h"
+#include "libc/stdio/stdio.h"
+#include "libc/str/str.h"
+#include "libc/sysv/consts/o.h"
+
+static const char *fixpathname(const char *pathname, int flags) {
+  if ((flags & O_ACCMODE) == O_RDONLY && strcmp(pathname, "-") == 0) {
+    return "/dev/stdin";
+  } else if ((flags & O_ACCMODE) == O_WRONLY && strcmp(pathname, "-") == 0) {
+    return "/dev/stdout";
+  } else {
+    return pathname;
+  }
+}
+
+static int openpathname(const char *pathname, int flags, bool *out_noclose) {
+  if ((flags & O_ACCMODE) == O_RDONLY && strcmp(pathname, "/dev/stdin") == 0) {
+    *out_noclose = true;
+    return fileno(stdin);
+  } else if ((flags & O_ACCMODE) == O_WRONLY &&
+             strcmp(pathname, "/dev/stdout") == 0) {
+    *out_noclose = true;
+    return fileno(stdout);
+  } else {
+    *out_noclose = false;
+    return open(pathname, flags, 0666);
+  }
+}
+
+/**
+ * Opens file as stream object.
+ *
+ * @param pathname is a utf-8 ideally relative filename
+ * @param mode is the string mode/flag DSL see fopenflags()
+ * @return new object to be free'd by fclose() or NULL w/ errno
+ * @note microsoft unilaterally deprecated this function lool
+ */
+FILE *fopen(const char *pathname, const char *mode) {
+  FILE *f;
+  bool noclose;
+  int fd, flags;
+  flags = fopenflags(mode);
+  pathname = fixpathname(pathname, flags);
+  if ((fd = openpathname(pathname, flags, &noclose)) != -1) {
+    if ((f = fdopen(fd, mode)) != NULL) {
+      f->noclose = noclose;
+      return f;
+    } else {
+      if (!noclose) close(fd);
+      return NULL;
+    }
+  } else {
+    return NULL;
+  }
+}
diff --git a/stdio/fopenflags.c b/stdio/fopenflags.c
new file mode 100644
index 0000000..268ea61
--- /dev/null
+++ b/stdio/fopenflags.c
@@ -0,0 +1,47 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/stdio/stdio.h"
+#include "libc/sysv/consts/o.h"
+
+/**
+ * Turns stdio flags description string into bitmask.
+ */
+int fopenflags(const char *mode) {
+  unsigned omode, flags;
+  omode = flags = 0;
+  do {
+    if (*mode == 'r') {
+      omode = O_RDONLY;
+    } else if (*mode == 'w') {
+      omode = O_WRONLY;
+      flags |= O_CREAT | O_TRUNC;
+    } else if (*mode == 'a') {
+      omode = O_WRONLY;
+      flags |= O_CREAT | O_APPEND;
+    } else if (*mode == '+') {
+      omode = O_RDWR;
+    } else if (*mode == 'x') {
+      flags |= O_EXCL;
+    } else if (*mode == 'e') {
+      flags |= O_CLOEXEC;
+    }
+  } while (*mode++);
+  return omode | flags;
+}
diff --git a/stdio/fpending.c b/stdio/fpending.c
new file mode 100644
index 0000000..1d54071
--- /dev/null
+++ b/stdio/fpending.c
@@ -0,0 +1,26 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio_ext.h"
+
+/**
+ * Returns number of pending output bytes.
+ */
+size_t __fpending(FILE *f) {
+  return f->end - f->beg;
+}
diff --git a/stdio/fprintf.c b/stdio/fprintf.c
new file mode 100644
index 0000000..10223fb
--- /dev/null
+++ b/stdio/fprintf.c
@@ -0,0 +1,28 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+int(fprintf)(FILE *f, const char *fmt, ...) {
+  int rc;
+  va_list va;
+  va_start(va, fmt);
+  rc = (vfprintf)(f, fmt, va);
+  va_end(va);
+  return rc;
+}
diff --git a/stdio/fpurge.c b/stdio/fpurge.c
new file mode 100644
index 0000000..ae87dd1
--- /dev/null
+++ b/stdio/fpurge.c
@@ -0,0 +1,26 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio_ext.h"
+
+/**
+ * Discards contents of stream buffer.
+ */
+void __fpurge(FILE *f) {
+  f->beg = f->end = 0;
+}
diff --git a/stdio/fputc.c b/stdio/fputc.c
new file mode 100644
index 0000000..635294f
--- /dev/null
+++ b/stdio/fputc.c
@@ -0,0 +1,38 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/stdio/stdio.h"
+
+/**
+ * Writes byte to stream.
+ *
+ * @param c is byte to buffer or write, which is masked
+ * @return c as unsigned char if written or -1 w/ errno
+ */
+int fputc(int c, FILE *f) {
+  unsigned char b;
+  if (c != '\n' && f->beg < f->size && f->bufmode != _IONBF) {
+    f->buf[f->beg++] = c;
+    return c & 0xff;
+  } else {
+    b = c;
+    if (!fwrite(&b, 1, 1, f)) return -1;
+    return b;
+  }
+}
diff --git a/stdio/fputs.c b/stdio/fputs.c
new file mode 100644
index 0000000..149b03c
--- /dev/null
+++ b/stdio/fputs.c
@@ -0,0 +1,39 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+#include "libc/str/str.h"
+
+/**
+ * Writes string to stream.
+ *
+ * Writing stops at the NUL-terminator, which isn't included in output.
+ * This function blocks until the full string is written, unless an
+ * unrecoverable error happens.
+ *
+ * @param s is a NUL-terminated string that's non-NULL
+ * @param f is an open stream
+ * @return bytes written, or -1 w/ errno
+ */
+int fputs(const char *s, FILE *f) {
+  size_t n, r;
+  n = strlen(s);
+  r = fwrite(s, 1, n, f);
+  if (!r && n) return -1;
+  return r;
+}
diff --git a/stdio/fputwc.c b/stdio/fputwc.c
new file mode 100644
index 0000000..3bb23e7
--- /dev/null
+++ b/stdio/fputwc.c
@@ -0,0 +1,40 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+#include "libc/str/tpenc.h"
+
+/**
+ * Writes wide character to stream.
+ *
+ * @return wc if written or -1 w/ errno
+ */
+wint_t fputwc(wchar_t wc, FILE *f) {
+  uint64_t w;
+  if (wc != -1) {
+    w = tpenc(wc);
+    do {
+      if (fputc(w, f) == -1) {
+        return -1;
+      }
+    } while ((w >>= 8));
+    return wc;
+  } else {
+    return -1;
+  }
+}
diff --git a/stdio/fputws.c b/stdio/fputws.c
new file mode 100644
index 0000000..b31fb17
--- /dev/null
+++ b/stdio/fputws.c
@@ -0,0 +1,44 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/errno.h"
+#include "libc/stdio/stdio.h"
+
+/**
+ * Writes wide character string to stream.
+ *
+ * Writing stops at the NUL-terminator, which isn't included in output.
+ * This function blocks until the full string is written, unless an
+ * unrecoverable error happens.
+ *
+ * @param s is a NUL-terminated string that's non-NULL
+ * @param f is an open stream
+ * @return strlen(s) or -1 w/ errno on error
+ */
+int fputws(const wchar_t *s, FILE *f) {
+  int res = 0;
+  while (*s) {
+    if (fputwc(*s++, f) == -1) {
+      if (ferror(f) == EINTR) continue;
+      if (feof(f)) errno = f->state = EPIPE;
+      return -1;
+    }
+    ++res;
+  }
+  return ++res;
+}
diff --git a/stdio/fread.c b/stdio/fread.c
new file mode 100644
index 0000000..52fea4d
--- /dev/null
+++ b/stdio/fread.c
@@ -0,0 +1,99 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/calls/struct/iovec.h"
+#include "libc/errno.h"
+#include "libc/fmt/conv.h"
+#include "libc/macros.internal.h"
+#include "libc/runtime/runtime.h"
+#include "libc/sock/sock.h"
+#include "libc/stdio/internal.h"
+#include "libc/stdio/stdio.h"
+#include "libc/str/internal.h"
+#include "libc/str/str.h"
+#include "libc/sysv/consts/o.h"
+#include "libc/sysv/errfuns.h"
+
+/**
+ * Reads data from stream.
+ *
+ * @param stride specifies the size of individual items
+ * @param count is the number of strides to fetch
+ * @return count on success, [0,count) on eof, or 0 on error or count==0
+ */
+size_t fread(void *buf, size_t stride, size_t count, FILE *f) {
+  char *p;
+  ssize_t rc;
+  size_t n, m;
+  struct iovec iov[2];
+  if ((f->iomode & O_ACCMODE) == O_WRONLY) {
+    f->state = errno = EBADF;
+    return 0;
+  }
+  if (f->beg > f->end) {
+    f->state = errno = EINVAL;
+    return 0;
+  }
+  p = buf;
+  n = stride * count;
+  m = f->end - f->beg;
+  memcpy(p, f->buf + f->beg, MIN(n, m));
+  if (n < m) {
+    f->beg += n;
+    return count;
+  }
+  if (n == m) {
+    f->beg = f->end = 0;
+    return count;
+  }
+  if (f->fd == -1) {
+    f->beg = 0;
+    f->end = 0;
+    f->state = -1;
+    return m / stride;
+  }
+  iov[0].iov_base = p + m;
+  iov[0].iov_len = n - m;
+  if (f->bufmode != _IONBF && n < f->size) {
+    iov[1].iov_base = f->buf;
+    if (f->size > PUSHBACK) {
+      iov[1].iov_len = f->size - PUSHBACK;
+    } else {
+      iov[1].iov_len = f->size;
+    }
+  } else {
+    iov[1].iov_base = NULL;
+    iov[1].iov_len = 0;
+  }
+  if ((rc = readv(f->fd, iov, 2)) == -1) {
+    f->state = errno;
+    return 0;
+  }
+  n = rc;
+  f->beg = 0;
+  f->end = 0;
+  if (n > iov[0].iov_len) {
+    f->end += n - iov[0].iov_len;
+    return count;
+  } else {
+    n = (m + n) / stride;
+    if (n < count) f->state = -1;
+    return n;
+  }
+}
diff --git a/stdio/freadable.c b/stdio/freadable.c
new file mode 100644
index 0000000..23281cb
--- /dev/null
+++ b/stdio/freadable.c
@@ -0,0 +1,28 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio_ext.h"
+#include "libc/sysv/consts/o.h"
+
+/**
+ * Returns nonzero if stream allows reading.
+ */
+int __freadable(FILE *f) {
+  return (f->iomode & O_ACCMODE) == O_RDONLY ||
+         (f->iomode & O_ACCMODE) == O_RDWR;
+}
diff --git a/stdio/freading.c b/stdio/freading.c
new file mode 100644
index 0000000..07f2f22
--- /dev/null
+++ b/stdio/freading.c
@@ -0,0 +1,27 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio_ext.h"
+#include "libc/sysv/consts/o.h"
+
+/**
+ * Returns nonzero if stream is read only.
+ */
+int __freading(FILE *f) {
+  return (f->iomode & O_ACCMODE) == O_RDONLY;
+}
diff --git a/stdio/freopen.c b/stdio/freopen.c
new file mode 100644
index 0000000..2f83742
--- /dev/null
+++ b/stdio/freopen.c
@@ -0,0 +1,60 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/stdio/stdio.h"
+#include "libc/sysv/consts/f.h"
+#include "libc/sysv/consts/fd.h"
+#include "libc/sysv/consts/o.h"
+
+/**
+ * Overwrites existing stream.
+ *
+ * This function can be used in two ways. The first is sort of a
+ * mutating assignment. The second behavior, if pathname is NULL, is
+ * just changing the mode of an already open file descriptor.
+ *
+ * @param pathname is the file to open or NULL
+ * @param mode is the mode string flags, see fopenflags()
+ * @param stream is the existing allocated stream memory, which is
+ *     flushed and closed if already open
+ * @return stream object if successful, or NULL w/ errno
+ */
+FILE *freopen(const char *pathname, const char *mode, FILE *stream) {
+  int fd;
+  unsigned flags;
+  flags = fopenflags(mode);
+  fflush(stream);
+  if (pathname) {
+    /* open new stream, overwriting existing alloc */
+    if ((fd = open(pathname, flags, 0666)) != -1) {
+      dup3(fd, stream->fd, flags & O_CLOEXEC);
+      close(fd);
+      stream->iomode = flags;
+      stream->beg = 0;
+      stream->end = 0;
+      return stream;
+    } else {
+      return NULL;
+    }
+  } else {
+    fcntl(stream->fd, F_SETFD, !!(flags & O_CLOEXEC));
+    fcntl(stream->fd, F_SETFL, flags & ~O_CLOEXEC);
+    return stream;
+  }
+}
diff --git a/stdio/fscanf.c b/stdio/fscanf.c
new file mode 100644
index 0000000..a713b7b
--- /dev/null
+++ b/stdio/fscanf.c
@@ -0,0 +1,44 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/fmt/fmt.h"
+#include "libc/stdio/stdio.h"
+
+/**
+ * Decodes data from stream.
+ *
+ * To read a line of data from a well-formed trustworthy file:
+ *
+ *     int x, y;
+ *     char text[256];
+ *     fscanf(f, "%d %d %s\n", &x, &y, text);
+ *
+ * Please note that this function is brittle by default, which makes it
+ * a good fit for yolo coding. With some toil it can be used in a way
+ * that makes it reasonably hardened although getline() may be better.
+ *
+ * @see libc/fmt/vcscanf.c
+ */
+int(fscanf)(FILE *stream, const char *fmt, ...) {
+  int rc;
+  va_list va;
+  va_start(va, fmt);
+  rc = (vcscanf)((int (*)(void *))fgetc, (void *)ungetc, stream, fmt, va);
+  va_end(va);
+  return rc;
+}
diff --git a/stdio/fseek.c b/stdio/fseek.c
new file mode 100644
index 0000000..f9c92c7
--- /dev/null
+++ b/stdio/fseek.c
@@ -0,0 +1,36 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Repositions open file stream.
+ *
+ * This function flushes the buffer (unless it's currently in the EOF
+ * state) and then calls lseek() on the underlying file. If the stream
+ * is in the EOF state, this function can be used to restore it without
+ * needing to reopen the file.
+ *
+ * @param f is a non-null stream handle
+ * @param offset is the byte delta
+ * @param whence can be SEET_SET, SEEK_CUR, or SEEK_END
+ * @returns 0 on success or -1 on error
+ */
+int fseek(FILE *f, long offset, int whence) {
+  return fseeko(f, offset, whence);
+}
diff --git a/stdio/fseeko.c b/stdio/fseeko.c
new file mode 100644
index 0000000..67dd330
--- /dev/null
+++ b/stdio/fseeko.c
@@ -0,0 +1,83 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/errno.h"
+#include "libc/stdio/stdio.h"
+#include "libc/sysv/consts/o.h"
+
+/**
+ * Repositions open file stream.
+ *
+ * This function flushes the buffer (unless it's currently in the EOF
+ * state) and then calls lseek() on the underlying file. If the stream
+ * is in the EOF state, this function can be used to restore it without
+ * needing to reopen the file.
+ *
+ * @param f is a non-null stream handle
+ * @param offset is the byte delta
+ * @param whence can be SEET_SET, SEEK_CUR, or SEEK_END
+ * @returns 0 on success or -1 on error
+ */
+int fseeko(FILE *f, int64_t offset, int whence) {
+  ssize_t rc;
+  int64_t pos;
+  if (f->fd != -1) {
+    if (f->beg && !f->end && (f->iomode & O_ACCMODE) != O_RDONLY) {
+      if ((rc = write(f->fd, f->buf, f->beg)) == -1) {
+        f->state = errno;
+        return -1;
+      }
+      if (rc != f->beg) abort();
+      f->beg = 0;
+    }
+    if (whence == SEEK_CUR && f->beg < f->end) {
+      offset -= f->end - f->beg;
+    }
+    if (lseek(f->fd, offset, whence) != -1) {
+      f->beg = 0;
+      f->end = 0;
+      return 0;
+    } else {
+      f->state = errno == ESPIPE ? EBADF : errno;
+      return -1;
+    }
+  } else {
+    switch (whence) {
+      case SEEK_SET:
+        pos = offset;
+        break;
+      case SEEK_CUR:
+        pos = f->beg + offset;
+        break;
+      case SEEK_END:
+        pos = f->end + offset;
+        break;
+      default:
+        pos = -1;
+        break;
+    }
+    if (0 <= pos && pos <= f->end) {
+      f->beg = pos;
+      return 0;
+    } else {
+      f->state = errno = EINVAL;
+      return -1;
+    }
+  }
+}
diff --git a/stdio/fsetlocking.c b/stdio/fsetlocking.c
new file mode 100644
index 0000000..2dd880e
--- /dev/null
+++ b/stdio/fsetlocking.c
@@ -0,0 +1,26 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio_ext.h"
+
+/**
+ * Does nothing and returns `FSETLOCKING_BYCALLER`.
+ */
+int __fsetlocking(FILE *f, int type) {
+  return FSETLOCKING_BYCALLER;
+}
diff --git a/stdio/fsetpos.c b/stdio/fsetpos.c
new file mode 100644
index 0000000..899ab69
--- /dev/null
+++ b/stdio/fsetpos.c
@@ -0,0 +1,24 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+#include "libc/calls/calls.h"
+
+int fsetpos(FILE *stream, const fpos_t *pos) {
+  return fseek(stream, *pos, SEEK_SET);
+}
diff --git a/stdio/ftell.c b/stdio/ftell.c
new file mode 100644
index 0000000..1f843ea
--- /dev/null
+++ b/stdio/ftell.c
@@ -0,0 +1,29 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Returns current position of stream.
+ *
+ * @param stream is a non-null stream handle
+ * @returns current byte offset from beginning, or -1 w/ errno
+ */
+long ftell(FILE *f) {
+  return ftello(f);
+}
diff --git a/stdio/ftello.c b/stdio/ftello.c
new file mode 100644
index 0000000..7c6148a
--- /dev/null
+++ b/stdio/ftello.c
@@ -0,0 +1,54 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/errno.h"
+#include "libc/runtime/runtime.h"
+#include "libc/stdio/stdio.h"
+#include "libc/sysv/consts/o.h"
+
+/**
+ * Returns current position of stream.
+ *
+ * @param stream is a non-null stream handle
+ * @returns current byte offset from beginning, or -1 w/ errno
+ */
+int64_t ftello(FILE *f) {
+  ssize_t rc;
+  int64_t pos;
+  uint32_t skew;
+  if (f->fd != -1) {
+    if (f->beg && !f->end && (f->iomode & O_ACCMODE) != O_RDONLY) {
+      if ((rc = write(f->fd, f->buf, f->beg)) == -1) {
+        f->state = errno;
+        return -1;
+      }
+      if (rc != f->beg) abort();
+      f->beg = 0;
+    }
+    if ((pos = lseek(f->fd, 0, SEEK_CUR)) != -1) {
+      if (f->beg < f->end) pos -= f->end - f->beg;
+      return pos;
+    } else {
+      f->state = errno == ESPIPE ? EBADF : errno;
+      return -1;
+    }
+  } else {
+    return f->beg;
+  }
+}
diff --git a/stdio/fwritable.c b/stdio/fwritable.c
new file mode 100644
index 0000000..04562f4
--- /dev/null
+++ b/stdio/fwritable.c
@@ -0,0 +1,28 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio_ext.h"
+#include "libc/sysv/consts/o.h"
+
+/**
+ * Returns nonzero if stream allows reading.
+ */
+int __fwritable(FILE *f) {
+  return (f->iomode & O_ACCMODE) == O_WRONLY ||
+         (f->iomode & O_ACCMODE) == O_RDWR;
+}
diff --git a/stdio/fwrite.c b/stdio/fwrite.c
new file mode 100644
index 0000000..30f1000
--- /dev/null
+++ b/stdio/fwrite.c
@@ -0,0 +1,89 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/calls/struct/iovec.h"
+#include "libc/errno.h"
+#include "libc/fmt/conv.h"
+#include "libc/macros.internal.h"
+#include "libc/runtime/runtime.h"
+#include "libc/sock/sock.h"
+#include "libc/stdio/internal.h"
+#include "libc/stdio/stdio.h"
+#include "libc/str/str.h"
+#include "libc/sysv/consts/o.h"
+
+/**
+ * Writes data to stream.
+ *
+ * @param stride specifies the size of individual items
+ * @param count is the number of strides to write
+ * @return count on success, [0,count) on EOF, 0 on error or count==0
+ */
+size_t fwrite(const void *data, size_t stride, size_t count, FILE *f) {
+  ldiv_t d;
+  ssize_t rc;
+  size_t n, m;
+  const char *p;
+  struct iovec iov[2];
+  if ((f->iomode & O_ACCMODE) == O_RDONLY) {
+    f->state = errno = EBADF;
+    return 0;
+  }
+  n = stride * count;
+  m = f->size - f->beg;
+  if (n <= m && f->bufmode != _IONBF) {
+    memcpy(f->buf + f->beg, data, n);
+    f->beg += n;
+    if (f->fd != -1 && f->bufmode == _IOLBF &&
+        (p = memrchr(f->buf, '\n', f->beg))) {
+      n = p + 1 - f->buf;
+      if ((rc = write(f->fd, f->buf, n)) == -1) {
+        if (errno == EINTR || errno == EAGAIN) return count;
+        f->state = errno;
+        return 0;
+      }
+      n = rc;
+      memmove(f->buf, f->buf + n, f->beg - n);
+      f->beg -= n;
+    }
+    return count;
+  }
+  if (f->fd == -1) {
+    n = MIN(n, m);
+    d = ldiv(n, stride);
+    n -= d.rem;
+    memcpy(f->buf + f->beg, data, n);
+    f->beg += n;
+    f->state = -1;
+    return d.quot;
+  }
+  iov[0].iov_base = f->buf;
+  iov[0].iov_len = f->beg;
+  iov[1].iov_base = data;
+  iov[1].iov_len = n;
+  n += f->beg;
+  if ((rc = writev(f->fd, iov, 2)) == -1) {
+    f->state = errno;
+    return 0;
+  }
+  m = rc;
+  if (n != m) abort();
+  f->beg = 0;
+  return count;
+}
diff --git a/stdio/fwriting.c b/stdio/fwriting.c
new file mode 100644
index 0000000..1820949
--- /dev/null
+++ b/stdio/fwriting.c
@@ -0,0 +1,27 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio_ext.h"
+#include "libc/sysv/consts/o.h"
+
+/**
+ * Returns nonzero if stream is write only.
+ */
+int __fwriting(FILE *f) {
+  return (f->iomode & O_ACCMODE) == O_WRONLY;
+}
diff --git a/stdio/get_current_dir_name.c b/stdio/get_current_dir_name.c
new file mode 100644
index 0000000..f9fdd0b
--- /dev/null
+++ b/stdio/get_current_dir_name.c
@@ -0,0 +1,38 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/bits/safemacros.internal.h"
+#include "libc/calls/calls.h"
+#include "libc/mem/mem.h"
+#include "libc/runtime/runtime.h"
+#include "libc/sysv/errfuns.h"
+
+/**
+ * Returns current working directory.
+ *
+ * If the PWD environment variable is set, that'll be returned (since
+ * it's faster than issuing a system call).
+ *
+ * @return pointer that must be free()'d, or NULL w/ errno
+ */
+nodiscard char *get_current_dir_name(void) {
+  char *buf, *res;
+  if (!(buf = malloc(PATH_MAX))) return NULL;
+  if (!(res = (getcwd)(buf, PATH_MAX))) free(buf);
+  return res;
+}
diff --git a/stdio/getc.c b/stdio/getc.c
new file mode 100644
index 0000000..71082bc
--- /dev/null
+++ b/stdio/getc.c
@@ -0,0 +1,27 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Reads byte from stream.
+ * @return byte in range 0..255, or -1 w/ errno
+ */
+int(getc)(FILE *f) {
+  return fgetc(f);
+}
diff --git a/stdio/getchar.c b/stdio/getchar.c
new file mode 100644
index 0000000..db56d6b
--- /dev/null
+++ b/stdio/getchar.c
@@ -0,0 +1,27 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Reads byte from stream.
+ * @return byte in range 0..255, or -1 w/ errno
+ */
+int getchar(void) {
+  return fgetc(stdin);
+}
diff --git a/stdio/getdelim.c b/stdio/getdelim.c
new file mode 100644
index 0000000..dfdadf2
--- /dev/null
+++ b/stdio/getdelim.c
@@ -0,0 +1,79 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/assert.h"
+#include "libc/calls/calls.h"
+#include "libc/errno.h"
+#include "libc/macros.internal.h"
+#include "libc/mem/mem.h"
+#include "libc/runtime/runtime.h"
+#include "libc/stdio/stdio.h"
+#include "libc/str/str.h"
+#include "libc/sysv/consts/o.h"
+
+/**
+ * Reads string from stream.
+ *
+ * @param s is the caller's buffer (in/out) which is extended or
+ *     allocated automatically, also NUL-terminated is guaranteed
+ * @param n is the capacity of s (in/out)
+ * @param delim is the stop char (and NUL is implicitly too)
+ * @return number of bytes read, including delim, excluding NUL, or -1
+ *     w/ errno on EOF or error; see ferror() and feof()
+ * @note this function can't punt EINTR to caller
+ * @see getline(), gettok_r()
+ */
+ssize_t getdelim(char **s, size_t *n, int delim, FILE *f) {
+  char *p;
+  ssize_t rc;
+  size_t i, m;
+  if ((f->iomode & O_ACCMODE) == O_WRONLY) {
+    f->state = errno = EBADF;
+    return -1;
+  }
+  if (f->beg > f->end || f->bufmode == _IONBF) {
+    f->state = errno = EINVAL;
+    return -1;
+  }
+  if (!*s) *n = 0;
+  for (i = 0;; i += m) {
+    m = f->end - f->beg;
+    if ((p = memchr(f->buf + f->beg, delim, m))) m = p + 1 - (f->buf + f->beg);
+    if (i + m + 1 > *n && !(*s = realloc(*s, (*n = i + m + 1)))) abort();
+    memcpy(*s + i, f->buf + f->beg, m);
+    (*s)[i + m] = '\0';
+    if ((f->beg += m) == f->end) f->beg = f->end = 0;
+    if (p) {
+      return i + m;
+    } else if (f->fd == -1) {
+      break;
+    } else if ((rc = read(f->fd, f->buf, f->size)) != -1) {
+      if (!rc) break;
+      f->end = rc;
+    } else if (errno != EINTR) {
+      f->state = errno;
+      return -1;
+    }
+  }
+  f->state = -1;
+  if (i + m) {
+    return i + m;
+  } else {
+    return -1;
+  }
+}
diff --git a/stdio/getline.c b/stdio/getline.c
new file mode 100644
index 0000000..4a5c259
--- /dev/null
+++ b/stdio/getline.c
@@ -0,0 +1,37 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Reads line from stream.
+ *
+ * This function delegates to getdelim(), which provides further
+ * documentation. Concerning lines, please note the \n or \r\n are
+ * included in results, and can be removed with chomp().
+ *
+ * @param line is the caller's buffer (in/out) which is extended
+ *     automatically. *line may be NULL but only if *n is 0;
+ *     NUL-termination is guaranteed FTMP
+ * @return number of bytes read, including delim, excluding NUL, or -1
+ *     w/ errno on EOF or error; see ferror() and feof()
+ * @see xgetline(), getdelim(), gettok_r()
+ */
+ssize_t getline(char **line, size_t *n, FILE *f) {
+  return getdelim(line, n, '\n', f);
+}
diff --git a/stdio/gets.c b/stdio/gets.c
new file mode 100644
index 0000000..d62e623
--- /dev/null
+++ b/stdio/gets.c
@@ -0,0 +1,24 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/limits.h"
+#include "libc/stdio/stdio.h"
+
+compatfn char *gets(char *s) {
+  return fgets(s, INT_MAX, stdin);
+}
diff --git a/stdio/getwc.c b/stdio/getwc.c
new file mode 100644
index 0000000..2ec4cc1
--- /dev/null
+++ b/stdio/getwc.c
@@ -0,0 +1,27 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Reads UTF-8 character from stream.
+ * @return wide character or -1 on EOF or error
+ */
+wint_t(getwc)(FILE *f) {
+  return fgetwc(f);
+}
diff --git a/stdio/getwchar.c b/stdio/getwchar.c
new file mode 100644
index 0000000..a455dbc
--- /dev/null
+++ b/stdio/getwchar.c
@@ -0,0 +1,27 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Reads UTF-8 character from stream.
+ * @return wide character or -1 on EOF or error
+ */
+wint_t getwchar(void) {
+  return fgetwc(stdin);
+}
diff --git a/stdio/internal.h b/stdio/internal.h
new file mode 100644
index 0000000..ba8de1e
--- /dev/null
+++ b/stdio/internal.h
@@ -0,0 +1,19 @@
+#ifndef COSMOPOLITAN_LIBC_STDIO_INTERNAL_H_
+#define COSMOPOLITAN_LIBC_STDIO_INTERNAL_H_
+#include "libc/stdio/stdio.h"
+
+#define PUSHBACK 12
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+extern char g_stdinbuf[BUFSIZ];
+extern char g_stdoutbuf[BUFSIZ];
+extern char g_stderrbuf[BUFSIZ];
+
+int __fflush_register(FILE *) hidden;
+void __fflush_unregister(FILE *) hidden;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#endif /* COSMOPOLITAN_LIBC_STDIO_INTERNAL_H_ */
diff --git a/stdio/mkostemp.c b/stdio/mkostemp.c
new file mode 100644
index 0000000..7d4bd03
--- /dev/null
+++ b/stdio/mkostemp.c
@@ -0,0 +1,23 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/temp.h"
+
+int mkostemp(char *template, unsigned flags) {
+  return mkostempsm(template, 0, flags, 0600);
+}
diff --git a/stdio/mkostemps.c b/stdio/mkostemps.c
new file mode 100644
index 0000000..2159770
--- /dev/null
+++ b/stdio/mkostemps.c
@@ -0,0 +1,26 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/temp.h"
+
+/**
+ * Delegates to mkotempsm() w/ owner-only non-execute access.
+ */
+nodiscard int mkostemps(char *template, int suffixlen, unsigned flags) {
+  return mkostempsm(template, suffixlen, flags, 0600);
+}
diff --git a/stdio/mkostempsm.c b/stdio/mkostempsm.c
new file mode 100644
index 0000000..f42e46f
--- /dev/null
+++ b/stdio/mkostempsm.c
@@ -0,0 +1,81 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/assert.h"
+#include "libc/calls/calls.h"
+#include "libc/errno.h"
+#include "libc/rand/lcg.internal.h"
+#include "libc/rand/rand.h"
+#include "libc/stdio/temp.h"
+#include "libc/str/str.h"
+#include "libc/sysv/consts/o.h"
+#include "libc/sysv/errfuns.h"
+
+#define RESEED   1024
+#define ATTEMPTS 10
+#define WILDCARD "XXXXXX"
+
+int mkostempsmi(char *tpl, int slen, unsigned flags, uint64_t *rando, int mode,
+                int openit(const char *file, int flags, ...)) {
+  size_t len = strlen(tpl);
+  size_t wildlen = strlen(WILDCARD);
+  if (len < wildlen || slen > len - wildlen) {
+    return einval();
+  }
+  char *ss = tpl + len - wildlen - slen;
+  assert(memcmp(ss, WILDCARD, wildlen) == 0);
+  flags = (flags & ~(flags & O_ACCMODE)) | O_RDWR | O_CREAT | O_EXCL;
+  unsigned attempts = ATTEMPTS;
+  do {
+    char *p = ss;
+    uint32_t num = KnuthLinearCongruentialGenerator(rando) >> 32;
+    for (unsigned i = 0; i < wildlen; ++i) {
+      p[i] = "0123456789abcdefghijklmnopqrstuvwxyz"[num & 31];
+      num >>= 5;
+    }
+    int fd;
+    if ((fd = openit(tpl, flags, 0600)) != -1) return fd;
+  } while (--attempts && errno == EEXIST);
+  memcpy(ss, WILDCARD, wildlen);
+  return -1;
+}
+
+static uint64_t g_mkostemps_rand;
+static uint64_t g_mkostemps_reseed;
+
+/**
+ * Opens unique temporary file.
+ *
+ * The substring XXXXXX is replaced with a pseudorandom number that's
+ * seeded automatically and grants 30 bits of randomness to each value.
+ * Retries are made in the unlikely event of collisions.
+ *
+ * @param template is a pathname relative to current directory by default,
+ *     that needs to have "XXXXXX" at the end of the string
+ * @param suffixlen may be nonzero to permit characters after the XXXXXX
+ * @param flags can have O_APPEND, O_CLOEXEC, etc.
+ * @param mode is conventionally 0600, for owner-only non-exec access
+ * @return exclusive open file descriptor for generated pathname,
+ *     or -1 w/ errno
+ * @see kTmpPath
+ */
+nodiscard int mkostempsm(char *template, int suffixlen, unsigned flags,
+                         int mode) {
+  if (g_mkostemps_reseed++ % RESEED == 0) g_mkostemps_rand = rand64();
+  return mkostempsmi(template, suffixlen, flags, &g_mkostemps_rand, mode, open);
+}
diff --git a/stdio/mkstemp.c b/stdio/mkstemp.c
new file mode 100644
index 0000000..881c3b4
--- /dev/null
+++ b/stdio/mkstemp.c
@@ -0,0 +1,23 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/temp.h"
+
+int mkstemp(char *template) {
+  return mkostempsm(template, 0, 0, 0600);
+}
diff --git a/stdio/mkstemps.c b/stdio/mkstemps.c
new file mode 100644
index 0000000..d785d93
--- /dev/null
+++ b/stdio/mkstemps.c
@@ -0,0 +1,23 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/temp.h"
+
+int mkstemps(char *template, int suffixlen) {
+  return mkostempsm(template, suffixlen, 0, 0600);
+}
diff --git a/stdio/mktemp.c b/stdio/mktemp.c
new file mode 100644
index 0000000..fb72216
--- /dev/null
+++ b/stdio/mktemp.c
@@ -0,0 +1,39 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/stdio/temp.h"
+#include "libc/sysv/errfuns.h"
+
+/**
+ * Generates unique filename.
+ *
+ * This function is usually frowned upon, since it's been known to
+ * create nasty opportunities for race conditions. Our implementation
+ * reflects that; consider using mkostemps().
+ */
+char *mktemp(char *template) {
+  int fd;
+  if ((fd = mkostemps(template, 0, 0)) != -1) {
+    close(fd);
+    unlink(template);
+  } else {
+    template[0] = '\0';
+  }
+  return template;
+}
diff --git a/stdio/pclose.c b/stdio/pclose.c
new file mode 100644
index 0000000..911855a
--- /dev/null
+++ b/stdio/pclose.c
@@ -0,0 +1,43 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/assert.h"
+#include "libc/calls/calls.h"
+#include "libc/errno.h"
+#include "libc/stdio/stdio.h"
+#include "libc/sysv/errfuns.h"
+
+/**
+ * Closes stream created by popen().
+ * @return termination status of subprocess, or -1 w/ ECHILD
+ */
+int pclose(FILE *f) {
+  int ws, pid;
+  pid = f->pid;
+  fclose(f);
+  assert(pid);
+  if (!pid) return 0;
+TryAgain:
+  if (wait4(pid, &ws, 0, 0) != -1) {
+    return ws;
+  } else if (errno == EINTR) {
+    goto TryAgain;
+  } else {
+    return echild();
+  }
+}
diff --git a/stdio/popen.c b/stdio/popen.c
new file mode 100644
index 0000000..50abc39
--- /dev/null
+++ b/stdio/popen.c
@@ -0,0 +1,57 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/errno.h"
+#include "libc/paths.h"
+#include "libc/runtime/runtime.h"
+#include "libc/stdio/internal.h"
+#include "libc/stdio/stdio.h"
+#include "libc/sysv/consts/f.h"
+#include "libc/sysv/consts/fd.h"
+#include "libc/sysv/consts/o.h"
+#include "libc/sysv/errfuns.h"
+
+/**
+ * Spawns subprocess and returns pipe stream.
+ * @see pclose()
+ */
+FILE *popen(const char *cmdline, const char *mode) {
+  FILE *f;
+  int dir, flags, pipefds[2];
+  flags = fopenflags(mode);
+  if ((flags & O_ACCMODE) == O_RDONLY) {
+    dir = 0;
+  } else if ((flags & O_ACCMODE) == O_WRONLY) {
+    dir = 1;
+  } else {
+    errno = EINVAL;
+    return NULL;
+  }
+  if (pipe(pipefds) == -1) return NULL;
+  fcntl(pipefds[dir], F_SETFD, FD_CLOEXEC);
+  if (!(f = fdopen(pipefds[dir], mode))) abort();
+  if ((f->pid = vfork()) == -1) abort();
+  if (!f->pid) {
+    dup2(pipefds[!dir], !dir);
+    systemexec(cmdline);
+    _exit(127);
+  }
+  close(pipefds[!dir]);
+  return f;
+}
diff --git a/stdio/printf.c b/stdio/printf.c
new file mode 100644
index 0000000..8c64c6d
--- /dev/null
+++ b/stdio/printf.c
@@ -0,0 +1,71 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Formats and writes string to stdout.
+ *
+ * Cosmopolitan supports most of the standard formatting behaviors
+ * described by `man 3 printf`, in addition to the following:
+ *
+ * - `%jd`, `%jx`, etc. are {,u}intmax_t which in Cosmopolitan is 128-bit.
+ *
+ * - `%'d` or `%,d` may be used to insert thousands separators. The prior is
+ *   consistent with C; the latter is consistent with Python.
+ *
+ * - `%m` inserts strerror(errno) into the formatted output. This is
+ *   consistent with glibc, musl, and uclibc.
+ *
+ * - `%n` inserts "\n" on non-Windows and "\r\n" on Windows. This is the
+ *   same behavior as Java. It's incompatible with glibc's behavior,
+ *   since that's problematic according to Android's security team.
+ *
+ * - `%hs` converts UTF-16/UCS-2 → UTF-8, which can be helpful on Windows.
+ *   Formatting (e.g. %-10hs) will use monospace display width rather
+ *   than string length or codepoint count.
+ *
+ * - `%ls` (or `%Ls`) converts UTF-32 → UTF-8. Formatting (e.g. %-10ls)
+ *   will use monospace display width rather than string length.
+ *
+ * - The `%#s` and `%#c` alternate forms display values using the
+ *   standard IBM standard 256-letter alphabet. Using `%#.*s` to specify
+ *   length will allow true binary (i.e. with NULs) to be formatted.
+ *
+ * - The `%'s` and `%'c` alternate forms are Cosmopolitan extensions for
+ *   escaping string literals for C/C++ and Python. The outer quotation
+ *   marks can be added automatically using ``%`s``. If constexpr format
+ *   strings are used, we can avoid linking cescapec() too.
+ *
+ * - The backtick modifier (``%`s`` and ``%`c``) and repr() directive
+ *   (`%r`) both ask the formatting machine to represent values as real
+ *   code rather than using arbitrary traditions for displaying values.
+ *   This means it implies the quoting modifier, wraps the value with
+ *   {,u,L}['"] quotes, displays NULL as "NULL" rather than "(null)".
+ *
+ * @see __fmt() for intuitive reference documentation
+ * @see {,v}{,s{,n},{,{,x}as},f,d}printf
+ */
+int(printf)(const char* fmt, ...) {
+  int rc;
+  va_list va;
+  va_start(va, fmt);
+  rc = (vfprintf)(stdout, fmt, va);
+  va_end(va);
+  return rc;
+}
diff --git a/stdio/putc.c b/stdio/putc.c
new file mode 100644
index 0000000..559519a
--- /dev/null
+++ b/stdio/putc.c
@@ -0,0 +1,29 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Writes byte to stream.
+ *
+ * @param c is byte to buffer or write, which is masked
+ * @return c as unsigned char if written or -1 w/ errno
+ */
+int(putc)(int c, FILE *f) {
+  return fputc(c, f);
+}
diff --git a/stdio/putchar.c b/stdio/putchar.c
new file mode 100644
index 0000000..55b7c3c
--- /dev/null
+++ b/stdio/putchar.c
@@ -0,0 +1,26 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Writes byte to stdout.
+ *
+ * @return c (as unsigned char) if written or -1 w/ errno
+ */
+int putchar(int c) { return fputc(c, stdout); }
diff --git a/stdio/puts.c b/stdio/puts.c
new file mode 100644
index 0000000..044420e
--- /dev/null
+++ b/stdio/puts.c
@@ -0,0 +1,38 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Writes string w/ trailing newline to stdout.
+ */
+int puts(const char *s) {
+  FILE *f;
+  size_t n, r;
+  f = stdout;
+  if ((n = strlen(s))) {
+    r = fwrite(s, 1, n, f);
+    if (!r) return -1;
+    if (r < n) return r;
+  }
+  if (fputc('\n', f) == -1) {
+    if (feof(f)) return n;
+    return -1;
+  }
+  return n + 1;
+}
diff --git a/stdio/putwc.c b/stdio/putwc.c
new file mode 100644
index 0000000..fad85ca
--- /dev/null
+++ b/stdio/putwc.c
@@ -0,0 +1,28 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Writes wide character to stream.
+ *
+ * @return wc if written or -1 w/ errno
+ */
+wint_t(putwc)(wchar_t wc, FILE *f) {
+  return fputwc(wc, f);
+}
diff --git a/stdio/putwchar.c b/stdio/putwchar.c
new file mode 100644
index 0000000..8fe5cf0
--- /dev/null
+++ b/stdio/putwchar.c
@@ -0,0 +1,27 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+/**
+ * Writes wide character to stdout.
+ * @return wc if written or -1 w/ errno
+ */
+wint_t putwchar(wchar_t wc) {
+  return fputwc(wc, stdout);
+}
diff --git a/stdio/rewind.c b/stdio/rewind.c
new file mode 100644
index 0000000..03aa3f5
--- /dev/null
+++ b/stdio/rewind.c
@@ -0,0 +1,31 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/stdio/stdio.h"
+
+/**
+ * Moves standard i/o stream to beginning of file.
+ *
+ * Like fseek(), this function can be used to restore a stream from the
+ * EOF state, without reopening it.
+ */
+void rewind(FILE *f) {
+  fseek(f, 0, SEEK_SET);
+  f->state = 0;
+}
diff --git a/stdio/scanf.c b/stdio/scanf.c
new file mode 100644
index 0000000..e2b19b2
--- /dev/null
+++ b/stdio/scanf.c
@@ -0,0 +1,33 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/fmt/fmt.h"
+#include "libc/stdio/stdio.h"
+
+/**
+ * Standard input decoder.
+ * @see libc/fmt/vcscanf.h
+ */
+int(scanf)(const char *fmt, ...) {
+  int rc;
+  va_list va;
+  va_start(va, fmt);
+  rc = (vcscanf)((int (*)(void *))fgetc, NULL, stdin, fmt, va);
+  va_end(va);
+  return rc;
+}
diff --git a/stdio/setbuf.c b/stdio/setbuf.c
new file mode 100644
index 0000000..4396f15
--- /dev/null
+++ b/stdio/setbuf.c
@@ -0,0 +1,27 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/stdio/stdio.h"
+
+/**
+ * Sets buffer on stdio stream.
+ */
+void setbuf(FILE *f, char *buf) {
+  setvbuf(f, buf, buf ? _IOFBF : _IONBF, BUFSIZ);
+}
diff --git a/stdio/setbuffer.c b/stdio/setbuffer.c
new file mode 100644
index 0000000..94220dc
--- /dev/null
+++ b/stdio/setbuffer.c
@@ -0,0 +1,33 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/runtime/runtime.h"
+#include "libc/stdio/stdio.h"
+#include "libc/sysv/errfuns.h"
+
+/**
+ * Sets buffer on stdio stream.
+ *
+ * @param buf may optionally be non-NULL to set the stream's underlying
+ *     buffer, which the stream will own, but won't free
+ * @param size is ignored if buf is NULL
+ */
+void setbuffer(FILE *f, char *buf, size_t size) {
+  setvbuf(f, buf, buf ? _IOFBF : _IONBF, size);
+}
diff --git a/stdio/setlinebuf.c b/stdio/setlinebuf.c
new file mode 100644
index 0000000..fa6bc64
--- /dev/null
+++ b/stdio/setlinebuf.c
@@ -0,0 +1,27 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/stdio/stdio.h"
+
+/**
+ * Puts stream in line-buffering mode.
+ */
+void setlinebuf(FILE *f) {
+  setvbuf(f, NULL, _IOLBF, 0);
+}
diff --git a/stdio/setvbuf.c b/stdio/setvbuf.c
new file mode 100644
index 0000000..4149bdd
--- /dev/null
+++ b/stdio/setvbuf.c
@@ -0,0 +1,42 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+#include "libc/sysv/errfuns.h"
+
+/**
+ * Tunes buffering settings for an stdio stream.
+ *
+ * @param mode may be _IOFBF, _IOLBF, or _IONBF
+ * @param buf may optionally be non-NULL to set the stream's underlying
+ *     buffer, which the stream will own, but won't free, otherwise the
+ *     existing buffer is used
+ * @param size is ignored if buf is NULL
+ * @return 0 on success or -1 on error
+ */
+int setvbuf(FILE *f, char *buf, int mode, size_t size) {
+  if (buf) {
+    if (!size) size = BUFSIZ;
+    if (!f->nofree && f->buf != buf) free_s(&f->buf);
+    f->buf = buf;
+    f->size = size;
+    f->nofree = true;
+  }
+  f->bufmode = mode;
+  return 0;
+}
diff --git a/stdio/spawn.c b/stdio/spawn.c
new file mode 100644
index 0000000..5dc3980
--- /dev/null
+++ b/stdio/spawn.c
@@ -0,0 +1,115 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/calls/scheduler.h"
+#include "libc/calls/sigbits.h"
+#include "libc/calls/struct/sigaction.h"
+#include "libc/errno.h"
+#include "libc/fmt/fmt.h"
+#include "libc/stdio/spawn.h"
+#include "libc/stdio/spawna.internal.h"
+#include "libc/str/str.h"
+
+/**
+ * Spawns process the POSIX way.
+ *
+ * @param pid is non-NULL and will be set to child pid in parent
+ * @param path of executable that is not PATH searched
+ * @return 0 on success or error number on failure
+ */
+int posix_spawn(int *pid, const char *path,
+                const posix_spawn_file_actions_t *file_actions,
+                const posix_spawnattr_t *attrp, char *const argv[],
+                char *const envp[]) {
+  unsigned mode;
+  sigset_t allsigs;
+  struct sigaction dfl;
+  char *p, *q, opath[PATH_MAX];
+  int s, fd, newfd, oflag, tempfd;
+  if (!(*pid = vfork())) {
+    if (attrp) {
+      if (attrp->posix_attr_flags & POSIX_SPAWN_SETPGROUP) {
+        if (setpgid(0, attrp->posix_attr_pgroup)) _exit(127);
+      }
+      if (attrp->posix_attr_flags & POSIX_SPAWN_SETSIGMASK) {
+        sigprocmask(SIG_SETMASK, &attrp->posix_attr_sigmask, NULL);
+      }
+      if (attrp->posix_attr_flags & POSIX_SPAWN_RESETIDS) {
+        setuid(getuid());
+        setgid(getgid());
+      }
+      if (attrp->posix_attr_flags & POSIX_SPAWN_SETSIGDEF) {
+        dfl.sa_handler = SIG_DFL;
+        dfl.sa_flags = 0;
+        sigfillset(&allsigs);
+        for (s = 0; sigismember(&allsigs, s); s++) {
+          if (sigismember(&attrp->posix_attr_sigdefault, s)) {
+            if (sigaction(s, &dfl, NULL) == -1) _exit(127);
+          }
+        }
+      }
+    }
+    if (file_actions) {
+      for (p = *file_actions; *p; p = strchr(p, ')') + 1) {
+        if (!strncmp(p, "close(", 6)) {
+          if (sscanf(p + 6, "%d)", &fd) != 1) _exit(127);
+          if (close(fd) == -1) _exit(127);
+        } else if (!strncmp(p, "dup2(", 5)) {
+          if (sscanf(p + 5, "%d,%d)", &fd, &newfd) != 2) _exit(127);
+          if (dup2(fd, newfd) == -1) _exit(127);
+        } else if (!strncmp(p, "open(", 5)) {
+          if (sscanf(p + 5, "%d,", &fd) != 1) _exit(127);
+          p = strchr(p, ',') + 1;
+          q = strchr(p, '*');
+          if (!q || q - p + 1 > PATH_MAX) _exit(127);
+          strncpy(opath, p, q - p);
+          opath[q - p] = '\0';
+          if (sscanf(q + 1, "%o,%o)", &oflag, &mode) != 2) _exit(127);
+          if (close(fd) == -1 && errno != EBADF) _exit(127);
+          tempfd = open(opath, oflag, mode);
+          if (tempfd == -1) _exit(127);
+          if (tempfd != fd) {
+            if (dup2(tempfd, fd) == -1) _exit(127);
+            if (close(tempfd) == -1) _exit(127);
+          }
+        } else {
+          _exit(127);
+        }
+      }
+    }
+    if (attrp) {
+      if (attrp->posix_attr_flags & POSIX_SPAWN_SETSCHEDULER) {
+        if (sched_setscheduler(0, attrp->posix_attr_schedpolicy,
+                               &attrp->posix_attr_schedparam) == -1) {
+          _exit(127);
+        }
+      }
+      if (attrp->posix_attr_flags & POSIX_SPAWN_SETSCHEDPARAM) {
+        if (sched_setparam(0, &attrp->posix_attr_schedparam) == -1) {
+          _exit(127);
+        }
+      }
+    }
+    execve(path, argv, envp);
+    _exit(127);
+  } else {
+    if (*pid == -1) return errno;
+    return 0;
+  }
+}
diff --git a/stdio/spawn.h b/stdio/spawn.h
new file mode 100644
index 0000000..7fe335c
--- /dev/null
+++ b/stdio/spawn.h
@@ -0,0 +1,50 @@
+#ifndef COSMOPOLITAN_LIBC_STDIO_SPAWN_H_
+#define COSMOPOLITAN_LIBC_STDIO_SPAWN_H_
+#include "libc/calls/struct/sched_param.h"
+#include "libc/calls/struct/sigset.h"
+
+#define POSIX_SPAWN_RESETIDS      0x01
+#define POSIX_SPAWN_SETPGROUP     0x02
+#define POSIX_SPAWN_SETSIGDEF     0x04
+#define POSIX_SPAWN_SETSIGMASK    0x08
+#define POSIX_SPAWN_SETSCHEDPARAM 0x10
+#define POSIX_SPAWN_SETSCHEDULER  0x20
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+typedef char *posix_spawn_file_actions_t;
+typedef struct _posix_spawnattr posix_spawnattr_t;
+
+int posix_spawn(int *, const char *, const posix_spawn_file_actions_t *,
+                const posix_spawnattr_t *, char *const[], char *const[]);
+int posix_spawnp(int *, const char *, const posix_spawn_file_actions_t *,
+                 const posix_spawnattr_t *, char *const[], char *const[]);
+
+int posix_spawn_file_actions_init(posix_spawn_file_actions_t *);
+int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *);
+int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, int);
+int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int, int);
+int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *, int,
+                                     const char *, int, unsigned);
+
+int posix_spawnattr_init(posix_spawnattr_t *);
+int posix_spawnattr_destroy(posix_spawnattr_t *);
+int posix_spawnattr_getflags(const posix_spawnattr_t *, short *);
+int posix_spawnattr_setflags(posix_spawnattr_t *, short);
+int posix_spawnattr_getpgroup(const posix_spawnattr_t *, int *);
+int posix_spawnattr_setpgroup(posix_spawnattr_t *, int);
+int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *, int *);
+int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int);
+int posix_spawnattr_getschedparam(const posix_spawnattr_t *,
+                                  struct sched_param *);
+int posix_spawnattr_setschedparam(posix_spawnattr_t *,
+                                  const struct sched_param *);
+int posix_spawnattr_getsigmask(const posix_spawnattr_t *, sigset_t *);
+int posix_spawnattr_setsigmask(posix_spawnattr_t *, const sigset_t *);
+int posix_spawnattr_getdefault(const posix_spawnattr_t *, sigset_t *);
+int posix_spawnattr_setsigdefault(posix_spawnattr_t *, const sigset_t *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#endif /* COSMOPOLITAN_LIBC_STDIO_SPAWN_H_ */
diff --git a/stdio/spawna.c b/stdio/spawna.c
new file mode 100644
index 0000000..125738e
--- /dev/null
+++ b/stdio/spawna.c
@@ -0,0 +1,107 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/calls/scheduler.h"
+#include "libc/calls/sigbits.h"
+#include "libc/stdio/spawn.h"
+#include "libc/stdio/spawna.internal.h"
+
+/**
+ * Initialize object with default values.
+ */
+int posix_spawnattr_init(posix_spawnattr_t *attr) {
+  attr->posix_attr_flags = 0;
+  attr->posix_attr_pgroup = 0;
+  sigprocmask(0, NULL, &attr->posix_attr_sigmask);
+  sigemptyset(&attr->posix_attr_sigdefault);
+  attr->posix_attr_schedpolicy = sched_getscheduler(0);
+  sched_getparam(0, &attr->posix_attr_schedparam);
+  return 0;
+}
+
+int posix_spawnattr_destroy(posix_spawnattr_t *attr) {
+  return 0;
+}
+
+int posix_spawnattr_getflags(const posix_spawnattr_t *attr, short *flags) {
+  *flags = attr->posix_attr_flags;
+  return 0;
+}
+
+int posix_spawnattr_setflags(posix_spawnattr_t *attr, short flags) {
+  attr->posix_attr_flags = flags;
+  return 0;
+}
+
+int posix_spawnattr_getpgroup(const posix_spawnattr_t *attr, int *pgroup) {
+  *pgroup = attr->posix_attr_pgroup;
+  return 0;
+}
+
+int posix_spawnattr_setpgroup(posix_spawnattr_t *attr, int pgroup) {
+  attr->posix_attr_pgroup = pgroup;
+  return 0;
+}
+
+int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *attr,
+                                   int *schedpolicy) {
+  *schedpolicy = attr->posix_attr_schedpolicy;
+  return 0;
+}
+
+int posix_spawnattr_setschedpolicy(posix_spawnattr_t *attr, int schedpolicy) {
+  attr->posix_attr_schedpolicy = schedpolicy;
+  return 0;
+}
+
+int posix_spawnattr_getschedparam(const posix_spawnattr_t *attr,
+                                  struct sched_param *schedparam) {
+  *schedparam = attr->posix_attr_schedparam;
+  return 0;
+}
+
+int posix_spawnattr_setschedparam(posix_spawnattr_t *attr,
+                                  const struct sched_param *schedparam) {
+  attr->posix_attr_schedparam = *schedparam;
+  return 0;
+}
+
+int posix_spawnattr_getsigmask(const posix_spawnattr_t *attr,
+                               sigset_t *sigmask) {
+  *sigmask = attr->posix_attr_sigmask;
+  return 0;
+}
+
+int posix_spawnattr_setsigmask(posix_spawnattr_t *attr,
+                               const sigset_t *sigmask) {
+  attr->posix_attr_sigmask = *sigmask;
+  return 0;
+}
+
+int posix_spawnattr_getsigdefault(const posix_spawnattr_t *attr,
+                                  sigset_t *sigdefault) {
+  *sigdefault = attr->posix_attr_sigdefault;
+  return 0;
+}
+
+int posix_spawnattr_setsigdefault(posix_spawnattr_t *attr,
+                                  const sigset_t *sigdefault) {
+  attr->posix_attr_sigdefault = *sigdefault;
+  return 0;
+}
diff --git a/stdio/spawna.internal.h b/stdio/spawna.internal.h
new file mode 100644
index 0000000..2635aca
--- /dev/null
+++ b/stdio/spawna.internal.h
@@ -0,0 +1,19 @@
+#ifndef COSMOPOLITAN_LIBC_STDIO_SPAWNA_INTERNAL_H_
+#define COSMOPOLITAN_LIBC_STDIO_SPAWNA_INTERNAL_H_
+#include "libc/calls/struct/sched_param.h"
+#include "libc/calls/struct/sigset.h"
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+struct _posix_spawnattr {
+  int16_t posix_attr_flags;
+  int32_t posix_attr_pgroup;
+  sigset_t posix_attr_sigmask;
+  sigset_t posix_attr_sigdefault;
+  int32_t posix_attr_schedpolicy;
+  struct sched_param posix_attr_schedparam;
+};
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#endif /* COSMOPOLITAN_LIBC_STDIO_SPAWNA_INTERNAL_H_ */
diff --git a/stdio/spawnf.c b/stdio/spawnf.c
new file mode 100644
index 0000000..3e893b1
--- /dev/null
+++ b/stdio/spawnf.c
@@ -0,0 +1,85 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/errno.h"
+#include "libc/fmt/fmt.h"
+#include "libc/mem/mem.h"
+#include "libc/stdio/spawn.h"
+#include "libc/str/str.h"
+
+/**
+ * Creates object with no actions.
+ */
+int posix_spawn_file_actions_init(posix_spawn_file_actions_t *file_actions) {
+  *file_actions = malloc(sizeof(char));
+  if (!*file_actions) return ENOMEM;
+  strcpy(*file_actions, "");
+  return 0;
+}
+
+/**
+ * Frees object storage and make invalid.
+ */
+int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *file_actions) {
+  free(*file_actions);
+  *file_actions = NULL;
+  return 0;
+}
+
+/**
+ * Adds new action string to object.
+ */
+static int add_to_file_actions(posix_spawn_file_actions_t *file_actions,
+                               char *new_action) {
+  *file_actions =
+      realloc(*file_actions, strlen(*file_actions) + strlen(new_action) + 1);
+  if (!*file_actions) return ENOMEM;
+  strcat(*file_actions, new_action);
+  return 0;
+}
+
+/**
+ * Add a close action to object.
+ */
+int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *file_actions,
+                                      int fildes) {
+  char temp[100];
+  sprintf(temp, "close(%d)", fildes);
+  return add_to_file_actions(file_actions, temp);
+}
+
+/**
+ * Add a dup2 action to object.
+ */
+int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *file_actions,
+                                     int fildes, int newfildes) {
+  char temp[100];
+  sprintf(temp, "dup2(%d,%d)", fildes, newfildes);
+  return add_to_file_actions(file_actions, temp);
+}
+
+/**
+ * Add an open action to object.
+ */
+int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *file_actions,
+                                     int fildes, const char *path, int oflag,
+                                     unsigned mode) {
+  char temp[100];
+  sprintf(temp, "open(%d,%s*%o,%o)", fildes, path, oflag, mode);
+  return add_to_file_actions(file_actions, temp);
+}
diff --git a/stdio/spawnp.c b/stdio/spawnp.c
new file mode 100644
index 0000000..2191b3c
--- /dev/null
+++ b/stdio/spawnp.c
@@ -0,0 +1,37 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/errno.h"
+#include "libc/stdio/spawn.h"
+
+/**
+ * Spawns process the POSIX way w/ PATH search.
+ *
+ * @param pid is non-NULL and will be set to child pid in parent
+ * @param path of executable is PATH searched unless it contains a slash
+ * @return 0 on success or error number on failure
+ */
+int posix_spawnp(int *pid, const char *path,
+                 const posix_spawn_file_actions_t *file_actions,
+                 const posix_spawnattr_t *attrp, char *const argv[],
+                 char *const envp[]) {
+  char pathbuf[PATH_MAX];
+  if (!(path = commandv(path, pathbuf))) return errno;
+  return posix_spawn(pid, path, file_actions, attrp, argv, envp);
+}
diff --git a/stdio/stdbuf.c b/stdio/stdbuf.c
new file mode 100644
index 0000000..67d68cf
--- /dev/null
+++ b/stdio/stdbuf.c
@@ -0,0 +1,22 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/internal.h"
+
+char g_stdoutbuf[BUFSIZ] hidden;
+char g_stderrbuf[BUFSIZ] hidden;
diff --git a/stdio/stderr-init.S b/stdio/stderr-init.S
new file mode 100644
index 0000000..30acd05
--- /dev/null
+++ b/stdio/stderr-init.S
@@ -0,0 +1,38 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/sysv/consts/o.h"
+#include "libc/dce.h"
+#include "libc/calls/calls.h"
+#include "libc/sysv/consts/fileno.h"
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+	.init.start 400,_init_stderr
+	ezlea	__stderr,ax
+	push	$_IOLBF
+	pop	(%rax)				#→ f.fd
+	push	STDERR_FILENO
+	pop	12(%rax)
+	mov	O_WRONLY,%edx
+	mov	%edx,4(%rax)			#→ f.iomode
+	ezlea	__stderr_buf,cx
+	mov	%rcx,24(%rax)			#→ f.buf
+	movl	$BUFSIZ,32(%rax)		#→ f.size
+	mov	%rax,stderr(%rip)
+	.init.end 400,_init_stderr,globl,hidden
diff --git a/stdio/stderr.c b/stdio/stderr.c
new file mode 100644
index 0000000..9529789
--- /dev/null
+++ b/stdio/stderr.c
@@ -0,0 +1,36 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/internal.h"
+#include "libc/stdio/stdio.h"
+
+STATIC_YOINK("_init_stderr");
+
+/**
+ * Pointer to standard error stream.
+ */
+FILE *stderr;
+
+hidden FILE __stderr;
+hidden unsigned char __stderr_buf[BUFSIZ];
+
+static textstartup void __stderr_init() {
+  __fflush_register(stderr);
+}
+
+const void *const __stderr_ctor[] initarray = {__stderr_init};
diff --git a/stdio/stdin-init.S b/stdio/stdin-init.S
new file mode 100644
index 0000000..4609537
--- /dev/null
+++ b/stdio/stdin-init.S
@@ -0,0 +1,34 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/sysv/consts/o.h"
+#include "libc/dce.h"
+#include "libc/calls/calls.h"
+#include "libc/sysv/consts/fileno.h"
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+	.init.start 400,_init_stdin
+	ezlea	__stdin,ax
+	mov	O_RDONLY,%edx
+	mov	%edx,4(%rax)			#→ f.iomode
+	ezlea	__stdin_buf,cx
+	mov	%rcx,24(%rax)			#→ f.buf
+	movl	$BUFSIZ,32(%rax)		#→ f.size
+	mov	%rax,stdin(%rip)
+	.init.end 400,_init_stdin,globl,hidden
diff --git a/stdio/stdin.c b/stdio/stdin.c
new file mode 100644
index 0000000..716a0b6
--- /dev/null
+++ b/stdio/stdin.c
@@ -0,0 +1,36 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/internal.h"
+#include "libc/stdio/stdio.h"
+
+STATIC_YOINK("_init_stdin");
+
+/**
+ * Pointer to standard input stream.
+ */
+FILE *stdin;
+
+hidden FILE __stdin;
+hidden unsigned char __stdin_buf[BUFSIZ];
+
+static textstartup void __stdin_init() {
+  __fflush_register(stdin);
+}
+
+const void *const __stdin_ctor[] initarray = {__stdin_init};
diff --git a/stdio/stdio.h b/stdio/stdio.h
new file mode 100644
index 0000000..268913b
--- /dev/null
+++ b/stdio/stdio.h
@@ -0,0 +1,129 @@
+#ifndef COSMOPOLITAN_LIBC_STDIO_STDIO_H_
+#define COSMOPOLITAN_LIBC_STDIO_STDIO_H_
+#include "libc/fmt/pflink.h"
+#include "libc/runtime/symbolic.h"
+
+#define FILENAME_MAX PATH_MAX
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § standard i/o                                              ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+typedef struct FILE {
+  uint8_t bufmode; /* 0x00 _IOFBF, etc. (ignored if fd=-1) */
+  bool noclose;    /* 0x01 for fake dup() */
+  uint32_t iomode; /* 0x04 O_RDONLY, etc. (ignored if fd=-1) */
+  int32_t state;   /* 0x08 0=OK, -1=EOF, >0=errno */
+  int fd;          /* 0x0c ≥0=fd, -1=closed|buffer */
+  uint32_t beg;    /* 0x10 */
+  uint32_t end;    /* 0x14 */
+  char *buf;       /* 0x18 */
+  uint32_t size;   /* 0x20 */
+  uint32_t nofree; /* 0x24 */
+  int pid;         /* 0x28 */
+} FILE;
+
+extern FILE *stdin;
+extern FILE *stdout;
+extern FILE *stderr;
+
+errno_t ferror(FILE *) paramsnonnull();
+void clearerr(FILE *) paramsnonnull();
+int feof(FILE *) paramsnonnull();
+int getc(FILE *) paramsnonnull();
+int putc(int, FILE *) paramsnonnull();
+int fflush(FILE *);
+int fgetc(FILE *) paramsnonnull();
+int ungetc(int, FILE *) paramsnonnull();
+int fileno(FILE *) paramsnonnull() nosideeffect;
+int fputc(int, FILE *) paramsnonnull();
+int fputs(const char *, FILE *) paramsnonnull();
+int fputws(const wchar_t *, FILE *) paramsnonnull();
+char *fgets(char *, int, FILE *) paramsnonnull();
+wchar_t *fgetws(wchar_t *, int, FILE *) paramsnonnull();
+wint_t putwc(wchar_t, FILE *) paramsnonnull();
+wint_t fputwc(wchar_t, FILE *) paramsnonnull();
+wint_t putwchar(wchar_t);
+wint_t getwchar(void);
+wint_t getwc(FILE *) paramsnonnull();
+wint_t fgetwc(FILE *) paramsnonnull();
+wint_t ungetwc(wint_t, FILE *) paramsnonnull();
+int getchar(void);
+int putchar(int);
+int puts(const char *) paramsnonnull();
+ssize_t getline(char **, size_t *, FILE *) paramsnonnull();
+ssize_t getdelim(char **, size_t *, int, FILE *) paramsnonnull();
+FILE *fopen(const char *, const char *) paramsnonnull() nodiscard;
+FILE *fdopen(int, const char *) paramsnonnull() nodiscard;
+FILE *fmemopen(void *, size_t, const char *) paramsnonnull((3)) nodiscard;
+FILE *freopen(const char *, const char *, FILE *) paramsnonnull((2, 3));
+size_t fread(void *, size_t, size_t, FILE *) paramsnonnull((4));
+size_t fwrite(const void *, size_t, size_t, FILE *) paramsnonnull((4));
+int fclose(FILE *);
+int fclose_s(FILE **) paramsnonnull();
+int fseek(FILE *, long, int) paramsnonnull();
+long ftell(FILE *) paramsnonnull();
+int fseeko(FILE *, int64_t, int) paramsnonnull();
+int64_t ftello(FILE *) paramsnonnull();
+void rewind(FILE *) paramsnonnull();
+int fopenflags(const char *) paramsnonnull();
+void setbuf(FILE *, char *);
+void setbuffer(FILE *, char *, size_t);
+int setvbuf(FILE *, char *, int, size_t);
+FILE *popen(const char *, const char *);
+int pclose(FILE *);
+
+typedef uint64_t fpos_t;
+compatfn char *gets(char *) paramsnonnull();
+compatfn int fgetpos(FILE *, fpos_t *) paramsnonnull();
+compatfn int fsetpos(FILE *, const fpos_t *) paramsnonnull();
+
+int system(const char *);
+int systemexec(const char *);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § standard i/o » formatting                                 ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+int printf(const char *, ...) printfesque(1)
+    paramsnonnull((1)) nothrow nocallback;
+int vprintf(const char *, va_list) paramsnonnull() nothrow nocallback;
+int fprintf(FILE *, const char *, ...) printfesque(2)
+    paramsnonnull((1, 2)) nothrow nocallback;
+int vfprintf(FILE *, const char *, va_list) paramsnonnull() nothrow nocallback;
+int scanf(const char *, ...) scanfesque(1);
+int vscanf(const char *, va_list);
+int fscanf(FILE *, const char *, ...) scanfesque(2);
+int vfscanf(FILE *, const char *, va_list);
+
+/*───────────────────────────────────────────────────────────────────────────│─╗
+│ cosmopolitan § standard i/o » optimizations                              ─╬─│┼
+╚────────────────────────────────────────────────────────────────────────────│*/
+
+#define getc(f)     fgetc(f)
+#define getwc(f)    fgetwc(f)
+#define putc(c, f)  fputc(c, f)
+#define putwc(c, f) fputwc(c, f)
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define printf(FMT, ...)     (printf)(PFLINK(FMT), ##__VA_ARGS__)
+#define vprintf(FMT, VA)     (vprintf)(PFLINK(FMT), VA)
+#define fprintf(F, FMT, ...) (fprintf)(F, PFLINK(FMT), ##__VA_ARGS__)
+#define vfprintf(F, FMT, VA) (vfprintf)(F, PFLINK(FMT), VA)
+#define vscanf(FMT, VA)      (vscanf)(SFLINK(FMT), VA)
+#define scanf(FMT, ...)      (scanf)(SFLINK(FMT), ##__VA_ARGS__)
+#define fscanf(F, FMT, ...)  (fscanf)(F, SFLINK(FMT), ##__VA_ARGS__)
+#define vfscanf(F, FMT, VA)  (vfscanf)(F, SFLINK(FMT), VA)
+#endif
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+
+#define stdin  SYMBOLIC(stdin)
+#define stdout SYMBOLIC(stdout)
+#define stderr SYMBOLIC(stderr)
+
+#endif /* COSMOPOLITAN_LIBC_STDIO_STDIO_H_ */
diff --git a/stdio/stdio.mk b/stdio/stdio.mk
new file mode 100644
index 0000000..a54636e
--- /dev/null
+++ b/stdio/stdio.mk
@@ -0,0 +1,66 @@
+#-*-mode:makefile-gmake;indent-tabs-mode:t;tab-width:8;coding:utf-8-*-┐
+#───vi: set et ft=make ts=8 tw=8 fenc=utf-8 :vi───────────────────────┘
+
+PKGS += LIBC_STDIO
+
+LIBC_STDIO_ARTIFACTS += LIBC_STDIO_A
+LIBC_STDIO = $(LIBC_STDIO_A_DEPS) $(LIBC_STDIO_A)
+LIBC_STDIO_A = o/$(MODE)/libc/stdio/stdio.a
+LIBC_STDIO_A_FILES := $(wildcard libc/stdio/*) $(wildcard libc/stdio/unlocked/*)
+LIBC_STDIO_A_HDRS = $(filter %.h,$(LIBC_STDIO_A_FILES))
+LIBC_STDIO_A_SRCS_S = $(filter %.S,$(LIBC_STDIO_A_FILES))
+LIBC_STDIO_A_SRCS_C = $(filter %.c,$(LIBC_STDIO_A_FILES))
+
+LIBC_STDIO_A_SRCS =					\
+	$(LIBC_STDIO_A_SRCS_S)				\
+	$(LIBC_STDIO_A_SRCS_C)
+
+LIBC_STDIO_A_OBJS =					\
+	$(LIBC_STDIO_A_SRCS_S:%.S=o/$(MODE)/%.o)	\
+	$(LIBC_STDIO_A_SRCS_C:%.c=o/$(MODE)/%.o)
+
+LIBC_STDIO_A_CHECKS =					\
+	$(LIBC_STDIO_A).pkg				\
+	$(LIBC_STDIO_A_HDRS:%=o/$(MODE)/%.ok)
+
+LIBC_STDIO_A_DIRECTDEPS =				\
+	LIBC_ALG					\
+	LIBC_BITS					\
+	LIBC_CALLS					\
+	LIBC_FMT					\
+	LIBC_INTRIN					\
+	LIBC_MEM					\
+	LIBC_NEXGEN32E					\
+	LIBC_NT_KERNEL32				\
+	LIBC_RAND					\
+	LIBC_RUNTIME					\
+	LIBC_STR					\
+	LIBC_STUBS					\
+	LIBC_SYSV					\
+	LIBC_SYSV_CALLS					\
+	THIRD_PARTY_GDTOA
+
+LIBC_STDIO_A_DEPS :=					\
+	$(call uniq,$(foreach x,$(LIBC_STDIO_A_DIRECTDEPS),$($(x))))
+
+$(LIBC_STDIO_A):libc/stdio/				\
+		$(LIBC_STDIO_A).pkg			\
+		$(LIBC_STDIO_A_OBJS)
+
+$(LIBC_STDIO_A).pkg:					\
+		$(LIBC_STDIO_A_OBJS)			\
+		$(foreach x,$(LIBC_STDIO_A_DIRECTDEPS),$($(x)_A).pkg)
+
+o/$(MODE)/libc/stdio/fputc.o:				\
+		OVERRIDE_CFLAGS +=			\
+			-O3
+
+LIBC_STDIO_LIBS = $(foreach x,$(LIBC_STDIO_ARTIFACTS),$($(x)))
+LIBC_STDIO_SRCS = $(foreach x,$(LIBC_STDIO_ARTIFACTS),$($(x)_SRCS))
+LIBC_STDIO_HDRS = $(foreach x,$(LIBC_STDIO_ARTIFACTS),$($(x)_HDRS))
+LIBC_STDIO_CHECKS = $(foreach x,$(LIBC_STDIO_ARTIFACTS),$($(x)_CHECKS))
+LIBC_STDIO_OBJS = $(foreach x,$(LIBC_STDIO_ARTIFACTS),$($(x)_OBJS))
+$(LIBC_STDIO_OBJS): $(BUILD_FILES) libc/stdio/stdio.mk
+
+.PHONY: o/$(MODE)/libc/stdio
+o/$(MODE)/libc/stdio: $(LIBC_STDIO_CHECKS)
diff --git a/stdio/stdio_ext.h b/stdio/stdio_ext.h
new file mode 100644
index 0000000..ea8b671
--- /dev/null
+++ b/stdio/stdio_ext.h
@@ -0,0 +1,25 @@
+#ifndef COSMOPOLITAN_LIBC_STDIO_STDIO_EXT_H_
+#define COSMOPOLITAN_LIBC_STDIO_STDIO_EXT_H_
+#include "libc/stdio/stdio.h"
+
+#define FSETLOCKING_QUERY    0
+#define FSETLOCKING_INTERNAL 1
+#define FSETLOCKING_BYCALLER 2
+
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+size_t __fbufsize(FILE *);
+size_t __fpending(FILE *);
+int __flbf(FILE *);
+int __freadable(FILE *);
+int __fwritable(FILE *);
+int __freading(FILE *);
+int __fwriting(FILE *);
+int __fsetlocking(FILE *, int);
+void _flushlbf(void);
+void __fpurge(FILE *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#endif /* COSMOPOLITAN_LIBC_STDIO_STDIO_EXT_H_ */
diff --git a/stdio/stdout-init.S b/stdio/stdout-init.S
new file mode 100644
index 0000000..da9efdb
--- /dev/null
+++ b/stdio/stdout-init.S
@@ -0,0 +1,36 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/sysv/consts/o.h"
+#include "libc/dce.h"
+#include "libc/calls/calls.h"
+#include "libc/sysv/consts/fileno.h"
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+	.init.start 400,_init_stdout
+	ezlea	__stdout,ax
+	push	STDOUT_FILENO
+	pop	12(%rax)			#→ f.fd
+	mov	O_WRONLY,%edx
+	mov	%edx,4(%rax)			#→ f.iomode
+	ezlea	__stdout_buf,cx
+	mov	%rcx,24(%rax)			#→ f.buf
+	movl	$BUFSIZ,32(%rax)		#→ f.size
+	mov	%rax,stdout(%rip)
+	.init.end 400,_init_stdout,globl,hidden
diff --git a/stdio/stdout.c b/stdio/stdout.c
new file mode 100644
index 0000000..41227ad
--- /dev/null
+++ b/stdio/stdout.c
@@ -0,0 +1,45 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/bits/pushpop.h"
+#include "libc/calls/calls.h"
+#include "libc/dce.h"
+#include "libc/stdio/internal.h"
+#include "libc/stdio/stdio.h"
+
+STATIC_YOINK("_init_stdout");
+
+/**
+ * Pointer to standard output stream.
+ */
+FILE *stdout;
+
+hidden FILE __stdout;
+hidden unsigned char __stdout_buf[BUFSIZ];
+
+static textstartup void __stdout_init() {
+  struct FILE *sf;
+  sf = stdout;
+  asm("" : "+r"(sf));
+  if (IsWindows() || ischardev(pushpop(sf->fd))) {
+    sf->bufmode = _IOLBF;
+  }
+  __fflush_register(sf);
+}
+
+const void *const __stdout_ctor[] initarray = {__stdout_init};
diff --git a/stdio/system.c b/stdio/system.c
new file mode 100644
index 0000000..ef58b0f
--- /dev/null
+++ b/stdio/system.c
@@ -0,0 +1,76 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/bits/weaken.h"
+#include "libc/calls/calls.h"
+#include "libc/calls/sigbits.h"
+#include "libc/calls/struct/sigaction.h"
+#include "libc/dce.h"
+#include "libc/errno.h"
+#include "libc/paths.h"
+#include "libc/runtime/runtime.h"
+#include "libc/stdio/stdio.h"
+#include "libc/str/str.h"
+#include "libc/sysv/consts/ok.h"
+#include "libc/sysv/consts/sig.h"
+
+/**
+ * Launches program with system command interpreter.
+ *
+ * @param cmdline is an interpreted Turing-complete command
+ * @return -1 if child process couldn't be created, otherwise a wait
+ *     status that can be accessed using macros like WEXITSTATUS(s)
+ */
+int system(const char *cmdline) {
+  int pid, wstatus;
+  sigset_t chldmask, savemask;
+  struct sigaction ignore, saveint, savequit;
+  if (!cmdline) {
+    if (IsWindows()) return 1;
+    if (access(_PATH_BSHELL, X_OK) == 0) return 1;
+    return 0;
+  }
+  ignore.sa_flags = 0;
+  ignore.sa_handler = SIG_IGN;
+  sigemptyset(&ignore.sa_mask);
+  sigaction(SIGINT, &ignore, &saveint);
+  sigaction(SIGQUIT, &ignore, &savequit);
+  sigemptyset(&chldmask);
+  sigaddset(&chldmask, SIGCHLD);
+  sigprocmask(SIG_BLOCK, &chldmask, &savemask);
+  if (!(pid = fork())) {
+    sigaction(SIGINT, &saveint, NULL);
+    sigaction(SIGQUIT, &savequit, NULL);
+    sigprocmask(SIG_SETMASK, &savemask, NULL);
+    systemexec(cmdline);
+    _exit(127);
+  } else if (pid != -1) {
+    while (wait4(pid, &wstatus, 0, NULL) == -1) {
+      if (errno != EINTR) {
+        wstatus = -1;
+        break;
+      }
+    }
+  } else {
+    wstatus = -1;
+  }
+  sigaction(SIGINT, &saveint, NULL);
+  sigaction(SIGQUIT, &savequit, NULL);
+  sigprocmask(SIG_SETMASK, &savemask, NULL);
+  return wstatus;
+}
diff --git a/stdio/systemexec.c b/stdio/systemexec.c
new file mode 100644
index 0000000..cb9b3fd
--- /dev/null
+++ b/stdio/systemexec.c
@@ -0,0 +1,38 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2021 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/calls/calls.h"
+#include "libc/dce.h"
+#include "libc/paths.h"
+#include "libc/runtime/runtime.h"
+#include "libc/stdio/stdio.h"
+#include "libc/str/str.h"
+
+/**
+ * Executes system command replacing current process.
+ * @vforksafe
+ */
+int systemexec(const char *cmdline) {
+  char comspec[128];
+  const char *prog, *arg;
+  strcpy(comspec, kNtSystemDirectory);
+  strcat(comspec, "cmd.exe");
+  prog = !IsWindows() ? _PATH_BSHELL : comspec;
+  arg = !IsWindows() ? "-c" : "/C";
+  return execv(prog, (char *const[]){prog, arg, cmdline, NULL});
+}
diff --git a/stdio/temp.h b/stdio/temp.h
new file mode 100644
index 0000000..9b6113f
--- /dev/null
+++ b/stdio/temp.h
@@ -0,0 +1,20 @@
+#ifndef COSMOPOLITAN_LIBC_STDIO_TEMP_H_
+#define COSMOPOLITAN_LIBC_STDIO_TEMP_H_
+#include "libc/stdio/stdio.h"
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+nodiscard FILE *tmpfile(void);
+nodiscard int mkstemp(char *);
+nodiscard int mkostemp(char *, unsigned);
+nodiscard int mkstemps(char *, int);
+nodiscard int mkostemps(char *, int, unsigned);
+nodiscard int mkostempsm(char *, int, unsigned, int);
+compatfn char *mktemp(char *);
+
+int mkostempsmi(char *, int, unsigned, uint64_t *, int,
+                int (*)(const char *, int, ...)) hidden nodiscard;
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#endif /* COSMOPOLITAN_LIBC_STDIO_TEMP_H_ */
diff --git a/stdio/tmpfile.c b/stdio/tmpfile.c
new file mode 100644
index 0000000..b2197e4
--- /dev/null
+++ b/stdio/tmpfile.c
@@ -0,0 +1,44 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/bits/safemacros.internal.h"
+#include "libc/calls/calls.h"
+#include "libc/fmt/fmt.h"
+#include "libc/macros.internal.h"
+#include "libc/runtime/runtime.h"
+#include "libc/stdio/stdio.h"
+#include "libc/stdio/temp.h"
+#include "libc/str/str.h"
+
+/**
+ * Creates a temporary file.
+ *
+ * @see mkostempsm(), kTmpPath
+ */
+FILE *tmpfile(void) {
+  int fd;
+  char *tmp, *sep, tpl[PATH_MAX];
+  tmp = firstnonnull(getenv("TMPDIR"), kTmpPath);
+  sep = !isempty(tmp) && !endswith(tmp, "/") ? "/" : "";
+  if (snprintf(tpl, PATH_MAX, "%s%stmp.XXXXXX", tmp, sep) < PATH_MAX) {
+    if ((fd = mkostemps(tpl, 0, 0)) != -1) {
+      return fdopen(fd, "w+");
+    }
+  }
+  return NULL;
+}
diff --git a/stdio/ungetc.c b/stdio/ungetc.c
new file mode 100644
index 0000000..91a28e2
--- /dev/null
+++ b/stdio/ungetc.c
@@ -0,0 +1,36 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+#include "libc/str/str.h"
+
+/**
+ * Pushes byte back to stream.
+ */
+int ungetc(int c, FILE *f) {
+  if (c == -1) return -1;
+  if (f->beg) {
+    f->buf[--f->beg] = c;
+  } else if (f->end < f->size) {
+    memmove(f->buf + 1, f->buf, f->end++);
+    f->buf[0] = c;
+  } else {
+    return -1;
+  }
+  return c & 0xff;
+}
diff --git a/stdio/ungetwc.c b/stdio/ungetwc.c
new file mode 100644
index 0000000..be1fce4
--- /dev/null
+++ b/stdio/ungetwc.c
@@ -0,0 +1,47 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+#include "libc/str/str.h"
+#include "libc/str/tpenc.h"
+
+/**
+ * Pushes wide character back to stream.
+ */
+wint_t ungetwc(wint_t c, FILE *f) {
+  char b[6];
+  unsigned n;
+  uint64_t w;
+  if (c == -1) return -1;
+  n = 0;
+  w = tpenc(c);
+  do {
+    b[n++] = w;
+  } while ((w >>= 8));
+  if (f->beg >= n) {
+    f->beg -= n;
+    memcpy(f->buf + f->beg, b, n);
+  } else if (f->beg + f->end + n <= f->size) {
+    memmove(f->buf + f->beg + n, f->buf + f->beg, f->end - f->beg);
+    memcpy(f->buf + f->beg, b, n);
+    f->end += n;
+  } else {
+    return -1;
+  }
+  return c;
+}
diff --git a/stdio/unlocked.h b/stdio/unlocked.h
new file mode 100644
index 0000000..8686466
--- /dev/null
+++ b/stdio/unlocked.h
@@ -0,0 +1,36 @@
+#ifndef COSMOPOLITAN_LIBC_STDIO_UNLOCKED_H_
+#define COSMOPOLITAN_LIBC_STDIO_UNLOCKED_H_
+#include "libc/stdio/stdio.h"
+#if !(__ASSEMBLER__ + __LINKER__ + 0)
+COSMOPOLITAN_C_START_
+
+void flockfile(FILE *);
+void funlockfile(FILE *);
+int ftrylockfile(FILE *);
+int getc_unlocked(FILE *) paramsnonnull();
+int getchar_unlocked(void);
+int putc_unlocked(int, FILE *) paramsnonnull();
+int putchar_unlocked(int);
+void clearerr_unlocked(FILE *);
+int feof_unlocked(FILE *);
+int ferror_unlocked(FILE *);
+int fileno_unlocked(FILE *);
+int fflush_unlocked(FILE *);
+int fgetc_unlocked(FILE *);
+int fputc_unlocked(int, FILE *);
+size_t fread_unlocked(void *, size_t, size_t, FILE *);
+size_t fwrite_unlocked(const void *, size_t, size_t, FILE *);
+char *fgets_unlocked(char *, int, FILE *);
+int fputs_unlocked(const char *, FILE *);
+wint_t getwc_unlocked(FILE *);
+wint_t getwchar_unlocked(void);
+wint_t fgetwc_unlocked(FILE *);
+wint_t fputwc_unlocked(wchar_t, FILE *);
+wint_t putwc_unlocked(wchar_t, FILE *);
+wint_t putwchar_unlocked(wchar_t);
+wchar_t *fgetws_unlocked(wchar_t *, int, FILE *);
+int fputws_unlocked(const wchar_t *, FILE *);
+
+COSMOPOLITAN_C_END_
+#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
+#endif /* COSMOPOLITAN_LIBC_STDIO_UNLOCKED_H_ */
diff --git a/stdio/unlocked/clearerr_unlocked.S b/stdio/unlocked/clearerr_unlocked.S
new file mode 100644
index 0000000..a1da354
--- /dev/null
+++ b/stdio/unlocked/clearerr_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+clearerr_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	clearerr
+	pop	%rbp
+	ret
+	.endfn	clearerr_unlocked,globl
diff --git a/stdio/unlocked/feof_unlocked.S b/stdio/unlocked/feof_unlocked.S
new file mode 100644
index 0000000..a3a80c1
--- /dev/null
+++ b/stdio/unlocked/feof_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+feof_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	feof
+	pop	%rbp
+	ret
+	.endfn	feof_unlocked,globl
diff --git a/stdio/unlocked/ferror_unlocked.S b/stdio/unlocked/ferror_unlocked.S
new file mode 100644
index 0000000..e6598fb
--- /dev/null
+++ b/stdio/unlocked/ferror_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+ferror_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	ferror
+	pop	%rbp
+	ret
+	.endfn	ferror_unlocked,globl
diff --git a/stdio/unlocked/fflush_unlocked.S b/stdio/unlocked/fflush_unlocked.S
new file mode 100644
index 0000000..280d080
--- /dev/null
+++ b/stdio/unlocked/fflush_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+fflush_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	fflush
+	pop	%rbp
+	ret
+	.endfn	fflush_unlocked,globl
diff --git a/stdio/unlocked/fgetc_unlocked.S b/stdio/unlocked/fgetc_unlocked.S
new file mode 100644
index 0000000..f4c77bc
--- /dev/null
+++ b/stdio/unlocked/fgetc_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+fgetc_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	fgetc
+	pop	%rbp
+	ret
+	.endfn	fgetc_unlocked,globl
diff --git a/stdio/unlocked/fgets_unlocked.S b/stdio/unlocked/fgets_unlocked.S
new file mode 100644
index 0000000..7521d8c
--- /dev/null
+++ b/stdio/unlocked/fgets_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+fgets_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	fgets
+	pop	%rbp
+	ret
+	.endfn	fgets_unlocked,globl
diff --git a/stdio/unlocked/fgetwc_unlocked.S b/stdio/unlocked/fgetwc_unlocked.S
new file mode 100644
index 0000000..52bbb7a
--- /dev/null
+++ b/stdio/unlocked/fgetwc_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+fgetwc_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	fgetwc
+	pop	%rbp
+	ret
+	.endfn	fgetwc_unlocked,globl
diff --git a/stdio/unlocked/fgetws_unlocked.S b/stdio/unlocked/fgetws_unlocked.S
new file mode 100644
index 0000000..02b1dd7
--- /dev/null
+++ b/stdio/unlocked/fgetws_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+fgetws_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	fgetws
+	pop	%rbp
+	ret
+	.endfn	fgetws_unlocked,globl
diff --git a/stdio/unlocked/fileno_unlocked.S b/stdio/unlocked/fileno_unlocked.S
new file mode 100644
index 0000000..f90be61
--- /dev/null
+++ b/stdio/unlocked/fileno_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+fileno_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	fileno
+	pop	%rbp
+	ret
+	.endfn	fileno_unlocked,globl
diff --git a/stdio/unlocked/fputc_unlocked.S b/stdio/unlocked/fputc_unlocked.S
new file mode 100644
index 0000000..7c35788
--- /dev/null
+++ b/stdio/unlocked/fputc_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+fputc_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	fputc
+	pop	%rbp
+	ret
+	.endfn	fputc_unlocked,globl
diff --git a/stdio/unlocked/fputs_unlocked.S b/stdio/unlocked/fputs_unlocked.S
new file mode 100644
index 0000000..2adf210
--- /dev/null
+++ b/stdio/unlocked/fputs_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+fputs_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	fputs
+	pop	%rbp
+	ret
+	.endfn	fputs_unlocked,globl
diff --git a/stdio/unlocked/fputwc_unlocked.S b/stdio/unlocked/fputwc_unlocked.S
new file mode 100644
index 0000000..1b505fa
--- /dev/null
+++ b/stdio/unlocked/fputwc_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+fputwc_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	fputwc
+	pop	%rbp
+	ret
+	.endfn	fputwc_unlocked,globl
diff --git a/stdio/unlocked/fputws_unlocked.S b/stdio/unlocked/fputws_unlocked.S
new file mode 100644
index 0000000..611be6a
--- /dev/null
+++ b/stdio/unlocked/fputws_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+fputws_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	fputws
+	pop	%rbp
+	ret
+	.endfn	fputws_unlocked,globl
diff --git a/stdio/unlocked/fread_unlocked.S b/stdio/unlocked/fread_unlocked.S
new file mode 100644
index 0000000..3cbb061
--- /dev/null
+++ b/stdio/unlocked/fread_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+fread_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	fread
+	pop	%rbp
+	ret
+	.endfn	fread_unlocked,globl
diff --git a/stdio/unlocked/fwrite_unlocked.S b/stdio/unlocked/fwrite_unlocked.S
new file mode 100644
index 0000000..d296e28
--- /dev/null
+++ b/stdio/unlocked/fwrite_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+fwrite_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	fwrite
+	pop	%rbp
+	ret
+	.endfn	fwrite_unlocked,globl
diff --git a/stdio/unlocked/getc_unlocked.S b/stdio/unlocked/getc_unlocked.S
new file mode 100644
index 0000000..1d6e9c7
--- /dev/null
+++ b/stdio/unlocked/getc_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+getc_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	getc
+	pop	%rbp
+	ret
+	.endfn	getc_unlocked,globl
diff --git a/stdio/unlocked/getchar_unlocked.S b/stdio/unlocked/getchar_unlocked.S
new file mode 100644
index 0000000..ebb6b76
--- /dev/null
+++ b/stdio/unlocked/getchar_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+getchar_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	getchar
+	pop	%rbp
+	ret
+	.endfn	getchar_unlocked,globl
diff --git a/stdio/unlocked/getwc_unlocked.S b/stdio/unlocked/getwc_unlocked.S
new file mode 100644
index 0000000..a024387
--- /dev/null
+++ b/stdio/unlocked/getwc_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+getwc_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	fgetwc_unlocked
+	pop	%rbp
+	ret
+	.endfn	getwc_unlocked,globl
diff --git a/stdio/unlocked/getwchar_unlocked.S b/stdio/unlocked/getwchar_unlocked.S
new file mode 100644
index 0000000..bb6710a
--- /dev/null
+++ b/stdio/unlocked/getwchar_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+getwchar_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	getwchar
+	pop	%rbp
+	ret
+	.endfn	getwchar_unlocked,globl
diff --git a/stdio/unlocked/putc_unlocked.S b/stdio/unlocked/putc_unlocked.S
new file mode 100644
index 0000000..842d740
--- /dev/null
+++ b/stdio/unlocked/putc_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+putc_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	putc
+	pop	%rbp
+	ret
+	.endfn	putc_unlocked,globl
diff --git a/stdio/unlocked/putchar_unlocked.S b/stdio/unlocked/putchar_unlocked.S
new file mode 100644
index 0000000..df0b807
--- /dev/null
+++ b/stdio/unlocked/putchar_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+putchar_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	putchar
+	pop	%rbp
+	ret
+	.endfn	putchar_unlocked,globl
diff --git a/stdio/unlocked/putwc_unlocked.S b/stdio/unlocked/putwc_unlocked.S
new file mode 100644
index 0000000..3890a2d
--- /dev/null
+++ b/stdio/unlocked/putwc_unlocked.S
@@ -0,0 +1,29 @@
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+putwc_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	fputwc_unlocked
+	pop	%rbp
+	ret
+	.endfn	putwc_unlocked,globl
diff --git a/stdio/unlocked/putwchar_unlocked.S b/stdio/unlocked/putwchar_unlocked.S
new file mode 100644
index 0000000..5e7f38e
--- /dev/null
+++ b/stdio/unlocked/putwchar_unlocked.S
@@ -0,0 +1,30 @@
+
+/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-│
+│vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/macros.internal.h"
+.source	__FILE__
+
+putwchar_unlocked:
+	push	%rbp
+	mov	%rsp,%rbp
+	.profilable		# note: no consensus for threads exists in abis
+	call	putwchar
+	pop	%rbp
+	ret
+	.endfn	putwchar_unlocked,globl
diff --git a/stdio/vfprintf.c b/stdio/vfprintf.c
new file mode 100644
index 0000000..cd2c0a2
--- /dev/null
+++ b/stdio/vfprintf.c
@@ -0,0 +1,41 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=8 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/fmt/fmt.h"
+#include "libc/limits.h"
+#include "libc/stdio/stdio.h"
+#include "libc/sysv/errfuns.h"
+
+struct state {
+  FILE *f;
+  int n;
+};
+
+static noinstrument int vfprintfputchar(int c, struct state *st) {
+  st->n++;
+  return fputc(c, st->f);
+}
+
+int(vfprintf)(FILE *f, const char *fmt, va_list va) {
+  struct state st[1] = {{f, 0}};
+  if (__fmt(vfprintfputchar, st, fmt, va) != -1) {
+    return st->n;
+  } else {
+    return -1;
+  }
+}
diff --git a/stdio/vfscanf.c b/stdio/vfscanf.c
new file mode 100644
index 0000000..536c554
--- /dev/null
+++ b/stdio/vfscanf.c
@@ -0,0 +1,28 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/fmt/fmt.h"
+#include "libc/stdio/stdio.h"
+
+/**
+ * Stream decoder.
+ * @see libc/fmt/vcscanf.h
+ */
+int(vfscanf)(FILE *stream, const char *fmt, va_list ap) {
+  return (vcscanf)((void *)fgetc, (void *)ungetc, stream, fmt, ap);
+}
diff --git a/stdio/vprintf.c b/stdio/vprintf.c
new file mode 100644
index 0000000..0599232
--- /dev/null
+++ b/stdio/vprintf.c
@@ -0,0 +1,23 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/stdio/stdio.h"
+
+int(vprintf)(const char* fmt, va_list va) {
+  return (vfprintf)(stdout, fmt, va);
+}
diff --git a/stdio/vscanf.c b/stdio/vscanf.c
new file mode 100644
index 0000000..acb01a2
--- /dev/null
+++ b/stdio/vscanf.c
@@ -0,0 +1,28 @@
+/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
+│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
+╞══════════════════════════════════════════════════════════════════════════════╡
+│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
+│                                                                              │
+│ Permission to use, copy, modify, and/or distribute this software for         │
+│ any purpose with or without fee is hereby granted, provided that the         │
+│ above copyright notice and this permission notice appear in all copies.      │
+│                                                                              │
+│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
+│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
+│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
+│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
+│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
+│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
+│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
+│ PERFORMANCE OF THIS SOFTWARE.                                                │
+╚─────────────────────────────────────────────────────────────────────────────*/
+#include "libc/fmt/fmt.h"
+#include "libc/stdio/stdio.h"
+
+/**
+ * String decoder.
+ * @see libc/fmt/vcscanf.h
+ */
+int(vscanf)(const char *fmt, va_list ap) {
+  return (vcscanf)((int (*)(void *))fgetc, (void *)ungetc, stdin, fmt, ap);
+}